我有这个代码:
private HttpWebRequest request;
private HttpWebResponse wResponse;
private CookieContainer cookieContainer = new CookieContainer();
#region PRIVATE METHODS
private void RunRequest(string url)
{
request = HttpWebRequest.Create(new Uri(url)) as HttpWebRequest;
request.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16";
request.ContentType = "application/x-www-form-urlencoded";
request.CookieContainer = cookieContainer;
request.Method = "GET";
StartWebRequest(request);
//Do smthng
while (wResponse == null) { }
}
private void StartWebRequest(HttpWebRequest request)
{
request.BeginGetResponse(FinishWebRequest, request);
}
private void FinishWebRequest(IAsyncResult result)
{
wResponse = (result.AsyncState as HttpWebRequest).EndGetResponse(result) as HttpWebResponse;
}
#endregion
并且 wRequest 变量未填充任何响应。在 AsyncState 中我有这个:
可能是什么问题?
附:相同的代码在桌面应用程序上运行良好。
谢谢, 帕维尔.
最佳答案
您的代码中有两个问题。
您没有正确使用异步回调方法:
替换
request.BeginGetResponse(FinishWebRequest, request);
与
request.BeginGetResponse(new AsyncCallback(FinishWebRequest), request);
为 GET 请求指定 Content-Type 无效,必须 对于 POST 请求。修改
RunRequest()
方法:private void RunRequest(string url, string method) { request = HttpWebRequest.Create(new Uri(url)) as HttpWebRequest; request.UserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16"; request.Method = method; // method can be GET, POST etc. if (method == "POST") request.ContentType = "application/x-www-form-urlencoded"; request.CookieContainer = cookieContainer; ... }
关于c# - Windows Phone 7 上的 HttpWebRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666542/