我一直在尋找我的問題的答案好幾天,但可悲的是沒有運氣。我希望你們在這裏能幫助我。如何從Windows Phone 7執行HttpWebRequests?
所以,我想要做的只是簡單地調用delicious.com API,它將最近的書籤返回給我(美味術語中的「帖子」)。因此,您只需使用以下URI並輸入您的憑證以登錄到delicious.com。
當我從一個標準的.NET4控制檯應用程序中使用HttpWebRequest的神奇功能並設置證書時,它按預期工作。試圖在WP7模擬器上執行相同的基本HttpWebRequest會導致WebException,指出「遠程服務器返回錯誤:NotFound。」。 當深入探究這個異常時,我可以看到我的Response有一個StatusDescription爲「未授權」。似乎沒有認證發生。
接下來我試着 - 當我閱讀設置憑證sometiemes導致問題 - 是直接設置「授權」RequestHeader。猜猜看,結果是一樣的。
我結束了下面的代碼,沒有想法。我希望,這裏有人能夠幫助我,並指出一種方式,我如何能夠從我的WP7中訪問我的書籤。
public void RetrieveRecentBookmarks(string userName, string password)
{
HttpWebRequest request = HttpWebRequest.CreateHttp(requestString);
byte[] bytes = System.Text.UTF8Encoding.UTF8.GetBytes(userName + ":" + password)
string authInfo = Convert.ToBase64String(bytes);
request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + authInfo;
RequestState state = new RequestState(request);
IAsyncResult result = request.BeginGetResponse(GetResponseCallback, state);
}
private static void GetResponseCallback(IAsyncResult asynchronousResult)
{
RequestState state = asynchronousResult.AsyncState as RequestState;
HttpWebRequest request = state.Request as HttpWebRequest;
// Here is where it breaks...
HttpWebResponse response = request.EndGetResponse(asynchronousResult) as HttpWebResponse;
}
在此先感謝!
我發現當模擬器不能在網絡上工作的時候。通常我通過嘗試使用模擬器瀏覽器來確認它是模擬器問題。它通常會失敗。如果您有實際的手機,請嘗試通過該手段進行調試。另一個測試是看看如果你點擊bing.com之類的東西,你會得到一個結果。 –
模擬器的瀏覽器工作得很好,每次我嘗試一下。另外,當去bing.com時,我的WebRequest很高興地返回。 由於這是我爲WP7開發的第一個應用程序,我還不是註冊開發者,因此設備上的調試還不是一種選擇。 我可能應該花99美元,而不是浪費更多的時間...... – bbohac