2011-11-06 70 views
0

我想用C#登錄到網頁Android Market。我花了整整一天的時間閱讀關於HTTP請求和POST數據,但似乎沒有任何工作。我可以做的是閱讀包含Google登錄表單的網頁。但閱讀頁面後登錄似乎是不可能的...如何使用C#登錄Android市場?

任何人都可以給我一個提示如何做到這一點?

BTW:我已經試過代碼如下所示:

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

該網站可能會發送一個驗證cookie,你必須按順序使用後續請求繼續驗證。 – driis

回答

1

我最常做的:讓live http headers for firefox,你可以記錄你的瀏覽器發送請求。然後在代碼中簡單地重複。

例如,android marketplace和你的代碼有很大不同。

實際發佈到:https://accounts.google.com/ServiceLoginAuth

和帖子中的數據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

你需要創建一個CookieContainer實例,並將其分配給每個請求CookieContainer財產。

這讓網站知道你仍然登錄將存儲登錄cookie

+0

好的,我補充說。與Ron的回答一起,下面的事情似乎現在開始工作。但現在谷歌給了我一個「關閉cookie功能,請打開它。」結果爲我的要求。還有什麼我需要考慮的嗎? – Boris

+0

他們可能需要一個在請求登錄頁面時設置的cookie。 – SLaks

+0

你能詳細說明一下嗎?因爲其實我以爲這就是我正在做的事情? – Boris