Войдите в центр продавца Amazon с помощью .NET HttpWebRequest - PullRequest
1 голос
/ 01 июля 2010

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

<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="myemail@domain.com"/>
    <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=myemail@domain.com";
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 по сравнению с отправкой формы через IE, которую Amazon отклоняет, но я не могу понять, что? Любая помощь высоко ценится - спасибо.

1 Ответ

0 голосов
/ 02 июля 2010

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

У них также есть библиотека C #

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

...