2010-07-01 4 views
1

Мне нужно очистить информацию о заказе от нашей центральной учетной записи продавца Amazon, поэтому я пытаюсь получить к ней доступ с помощью HttpWebRequest из приложения .NET forms. Я знаю, что это не так сложно, чтобы войти в систему, потому что если я открываю этот локальный HTML в IE:Войти в Amazon seller central using .NET HttpWebRequest

<html> 
<body> 
<form action="https://sellercentral.amazon.co.uk/gp/sign-in/sign-in.html/ref=ag_login_lgin_myo" method="post" name="signin"> 
    <input type="hidden" name="protocol" value="https" /> 
    <input type="hidden" name="action" value="sign-in" /> 
    <input type="text" name="email" value="[email protected]"/> 
    <input type="password" name="password" value="xxxxxx"/> 
    <input type="submit" name="sign-in-button"/> 
</form> 
</body> 
</html> 

и отправить мне успешно получить вошедшего на домашней странице Amazon назад. Однако я не могу получить эту работу с помощью кода, я всегда получаю страницу входа обратно вместо этого, вот код:

string sUrl = "https://sellercentral.amazon.co.uk/gp/sign-in/sign-in.html/ref=ag_login_lgin_myo"; 
string sPostData = ""; 
sPostData += "protocol=https"; 
sPostData += "&action=sign-in"; 
sPostData += "&[email protected]"; 
sPostData += "&password=xxxxxx"; 
sPostData += "&sign-in-button="; 

// initialise request object 
HttpWebRequest oRequest = (HttpWebRequest)WebRequest.Create(sUrl); 
oRequest.Timeout = 30000; 

// set fake headers 
oRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1)"; 

// set the method & content type 
oRequest.Method = "POST"; 
oRequest.ContentType = "application/x-www-form-urlencoded"; 

// prepare post data 
ASCIIEncoding encoding = new ASCIIEncoding(); 
byte[] byteArr = encoding.GetBytes(sPostData); 

// write to request 
oRequest.ContentLength = byteArr.Length; 
Stream reqStream = oRequest.GetRequestStream(); 
reqStream.Write(byteArr, 0, byteArr.Length); 
reqStream.Close(); 

// fetch the page 
HttpWebResponse oResponse = (HttpWebResponse)oRequest.GetResponse(); 

// convert response to a string 
StreamReader sr = new StreamReader(oResponse.GetResponseStream()); 
string responseHTML = sr.ReadToEnd().ToLower(); 
sr.Close(); 

Любые идеи, что я делаю не так? Я предполагаю, что в моем HttpWebRequest есть что-то другое по сравнению с формой submit через IE, которую Amazon отвергает, но я не могу понять, что? Любая помощь очень ценится - спасибо.

ответ

0

Вы изучали Amazon Web Services?

Они также имеют C# library

Если вы по-прежнему настаивают на том, это по-своему, попробуйте установить CookieContainer() по запросу.

+0

Старый вопрос, но по-прежнему актуальны. «AWS» доступен только для продавцов (с ежемесячной оплатой) и не включает в себя всю информацию о продавце (только информация Amazon, которая вам может понадобиться). Ваш ответ в cookie более подходит. –