我一直在寻找我的问题的答案好几天,但可悲的是没有运气。我希望你们在这里能帮助我。如何从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