Как войти в Android Market с помощью C #? - PullRequest
0 голосов
/ 06 ноября 2011

Я хотел бы войти на веб-страницу Android Market , используя C #. Я потратил целый день на чтение HTTP-запросов и данных POST, но, похоже, ничего не работает. Что я могу сделать, так это прочитать веб-страницу с формой входа в Google. Но читать страницу ПОСЛЕ логина кажется невозможным ...

Может кто-нибудь дать мне подсказку, как это сделать?

Кстати: код, который я пробовал, показан ниже:

string mail = "XXXXXXXXXX@gmail.com";
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 ();

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

Что я обычно делаю: получаю живые http заголовки для firefox , и вы можете записать запрос, который отправляет ваш браузер.Затем просто повторите это в коде. Например,

, Android Marketplace сильно отличается от вашего кода.

он действительно отправляет:данные 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 голос
/ 06 ноября 2011

Вам необходимо создать экземпляр CookieContainer и назначить его свойству CookieContainer в каждом запросе.

При этом будет сохранен файл cookie для входа, чтобы сайт знал, что вы все еще вошли в систему.

...