我开始在我的windows8机器上进行windows phone8开发,并在visual studio 2012自带的模拟器上进行测试。我有一个主页,上面有一个按钮。一旦按下按钮,它就会发出一个http请求。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
string uriString = "http://209.143.33.109/mjpg/video.mjpg?camera=1";
var uri = new Uri(uriString);
var httpWebRequest = HttpWebRequest.Create(uri);
httpWebRequest.BeginGetResponse(new AsyncCallback(OnGettingResponse), httpWebRequest);
}
private void OnGettingResponse(IAsyncResult ar)
{
var req = ar.AsyncState as HttpWebRequest;
var response = (HttpWebResponse)req.EndGetResponse(ar);
var responseStream = response.GetResponseStream();
}
我在OnGettingResponse上设置了一个断点。但当我按下按钮时,断点永远不会被击中。
我是不是遗漏了什么明显的东西?
发布于 2013-04-26 15:03:32
我面临着同样的问题,即使等待了太长时间,我的回调也没有被调用。
我找到了这个堆栈溢出答案https://stackoverflow.com/a/15041383,并相应地修改了我的代码。这个问题的实际问题是,asker希望在Windows phone8下的HttpWebRequest中有一些超时功能。有计时器对我来说并不重要,所以我只使用了以下代码部分:
public async Task<string> httpRequest(HttpWebRequest request)
{
string received;
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
received = await sr.ReadToEndAsync();
}
}
}
return received;
}
并将我对此方法的调用修改为:
var response = await httpRequest(request);
这对我来说现在工作得很好。
我还仔细检查了ID_CAP_NETWORKING是否在WMAppManifest.xml中签入,以及internet是否在我的模拟器上工作。
https://stackoverflow.com/questions/15036458
复制相似问题