我正在尝试从 Windows Phone 7 应用程序的此 URL https://valueboxtest.lb.dk/mobile/categories下载常规 JSON 字符串。
我尝试同时使用 WebClient 和 HttpWebRequest。他们都抛出异常
“The remote server returned an error: NotFound”
这是使用 WebClient 的代码
var webClient = new WebClient();
webClient.DownloadStringCompleted += (client_DownloadStringCompleted);
webClient.DownloadStringAsync(new Uri("https://valueboxtest.lb.dk/mobile/categories"));
然后事件处理程序只显示内容,但 e.Result 抛出上述异常:
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled) MessageBox.Show(e.Result);
}
对于 HttpWebRequest,我的代码如下所示:
var httpReq = (HttpWebRequest)WebRequest.Create(new Uri("https://valueboxtest.lb.dk/mobile/categories"));
httpReq.BeginGetResponse(HTTPWebRequestCallBack, httpReq);
使用以下回调:
private void HTTPWebRequestCallBack(IAsyncResult result)
{
var httpRequest = (HttpWebRequest)result.AsyncState;
var response = httpRequest.EndGetResponse(result);
var stream = response.GetResponseStream();
var reader = new StreamReader(stream);
this.Dispatcher.BeginInvoke(
new delegateUpdate(update),
new Object[] { reader.ReadToEnd() }
);
}
并使用委托方法
delegate void delegateUpdate(string content);
private void update(string content)
{
MessageBox.Show(content);
}
在控制台应用程序中运行它
一切正常,返回的 JSON 字符串没有问题,我可以将结果打印到控制台。
不同的 URL确实适用于 WP7
奇怪的是 URL http://mobiforge.com/rssfeed实际上在上述两种情况下都可以正常工作。
在模拟器和实际设备上都会出现此问题。
有什么问题?REST 服务是否以行为不端的方式返回数据?我真的希望你能帮助我!
注意:我没有同时运行 Fiddler2!