我正在尝试从Windows Phone 7应用程序中从此网址https://valueboxtest.lb.dk/mobile/categories下载常规JSON字符串。
我曾尝试过使用WebClient和HttpWebRequest。他们都抛出异常
“The remote server returned an error: NotFound”
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);
}
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 http://mobiforge.com/rssfeed在上述两种情况下实际上都能正常工作。
在实际设备上的模拟器和中都会出现此问题。
可能有什么不对? REST服务是否以不正常的方式返回数据?我真的希望你能帮助我!
注意:我没有同时运行Fiddler2!
答案 0 :(得分:4)
原因是该网站没有有效的证书。只需在Mobile Internet Explorer上试用它,您就会收到有关证书问题的提示。
How to ignore SSL certificates
移动设备在SSL证书方面更为严格。
如果您想将此应用程序带入生产环境,您需要为此服务器编写一个包装器(如果它不是您自己的),或者获取有效的证书。在短期内,为了进行测试,您可以在设备中添加证书。