2010-07-01 3 views
1

J'ai besoin de récupérer les informations de commande de notre compte central Amazon vendeur, donc j'essaie d'y accéder en utilisant HttpWebRequest à partir d'une application .NET forms. Je sais qu'il est pas difficile de journaliser en car si j'ouvre ce code HTML local dans IE:Connectez-vous au vendeur central Amazon en utilisant .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> 

et soumettre je reçois avec succès ouvert une session Amazon page d'accueil de retour. Cependant, je ne peux pas obtenir ce travail via le code, je reçois toujours la page de connexion à nouveau à la place, voici le code:

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(); 

Toutes les idées que je fais mal? Je suppose qu'il doit y avoir quelque chose de différent dans ma soumission HttpWebRequest par rapport au formulaire de soumission via IE que Amazon rejette mais je ne peux pas comprendre quoi? Toute aide très appréciée - merci.

Répondre

0

Avez-vous examiné Amazon Web Services?

Ils ont aussi un C# library

Si vous insistez toujours sur faire votre chemin, essayez de définir une CookieContainer() à la demande.

+0

Ancienne question, mais toujours pertinente. 'AWS' n'est disponible que pour les vendeurs professionnels (avec des frais mensuels) et n'inclut pas toutes les informations sur le vendeur (seulement les informations dont vous pourriez avoir besoin). Votre réponse de cookie est plus appropriée. –

Questions connexes