2011-11-06 3 views
0

Je voudrais me connecter à la page Web Android Market en utilisant C#. J'ai passé toute la journée à lire sur les requêtes HTTP et les données POST, mais rien ne semble fonctionner. Ce que je peux faire est de lire la page Web qui contient le formulaire de connexion google. Mais lire la page après la connexion semble impossible ...Comment se connecter au marché Android en utilisant C#?

Quelqu'un peut-il me donner un indice sur la façon de faire cela?

BTW: Le code que j'ai essayé est indiqué ci-dessous:

string mail = "[email protected]"; 
string pw = "XXXXXXXXXX"; 

// Create a request using a URL that can receive a post. 
WebRequest request = WebRequest.Create (@"https://market.android.com/publish"); 
// Set the Method property of the request to POST. 
request.Method = "POST"; 
// Create POST data and convert it to a byte array. 
string postData = String.Format ("Email={0}&Passwd={1}&signIn=Sign+in", mail, pw); 
byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
// Set the ContentType property of the WebRequest. 
request.ContentType = "application/x-www-form-urlencoded"; 
// Set the ContentLength property of the WebRequest. 
request.ContentLength = byteArray.Length; 
// Get the request stream. 
Stream dataStream = request.GetRequestStream(); 
// Write the data to the request stream. 
dataStream.Write (byteArray, 0, byteArray.Length); 
// Close the Stream object. 
dataStream.Close(); 
// Get the response. 
WebResponse response = request.GetResponse(); 
// Display the status. 
Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
// Get the stream containing content returned by the server. 
dataStream = response.GetResponseStream(); 
// Open the stream using a StreamReader for easy access. 
StreamReader reader = new StreamReader (dataStream); 
// Read the content. 
string responseFromServer = reader.ReadToEnd(); 
// Display the content. 
Console.WriteLine (responseFromServer); 
// Clean up the streams. 
reader.Close(); 
dataStream.Close(); 
response.Close(); 
+0

Le site sera probablement envoyer un cookie d'authentification, que vous devez utiliser pour les demandes ultérieures afin de le rester. – driis

Répondre

1

Ce que je habituellement. Obtenir live http headers for firefox et vous pouvez enregistrer la demande de votre navigateur envoie. Ensuite, répétez simplement cela dans le code. Par exemple, la place de marché android est assez différente de votre code.

il affiche réellement: https://accounts.google.com/ServiceLoginAuth

les données et les messages continue=https%3A%2F%2Fmarket.android.com%2Fpublish%2FHome&followup=https%3A%2F%2Fmarket.android.com%2Fpublish%2FHome&service=androiddeveloper&nui=1&dsh=&GALX=&pstMsg=1&dnConn=&timeStmp=&secTok=&Email=Passwd=&signIn=

1

Vous devez créer une instance CookieContainer et l'affecter à la demande dans chaque propriété CookieContainer.

Cela stocker le cookie de connexion afin que le site sait que vous êtes toujours connecté

+0

D'accord, j'ai ajouté ça. Avec la réponse de Ron ci-dessous les choses semblent commencer à fonctionner maintenant. Mais maintenant Google me donne une "fonctionnalité de cookie est désactivée. S'il vous plaît allumez-le." résultat pour ma demande. Y a-t-il autre chose que je dois considérer? – Boris

+0

Ils veulent probablement un cookie qui est défini lorsque vous demandez la page de connexion. – SLaks

+0

Pourriez-vous élaborer un peu plus loin? Parce qu'en fait je pensais que c'était ce que je faisais? – Boris

Questions connexes