Windows phone 7 HttpWebRequest和WebClient在Windows Phone 7上返回NotFound,但在普通控制台应用程序上未找到

Windows phone 7 HttpWebRequest和WebClient在Windows Phone 7上返回NotFound,但在普通控制台应用程序上未找到,windows-phone-7,httpwebrequest,webclient,Windows Phone 7,Httpwebrequest,Webclient,我正试图从WindowsPhone7应用程序中从这个url下载一个常规JSON字符串 我尝试使用WebClient和HttpWebRequest。他们都抛出了一个例外 “The remote server returned an error: NotFound” 这是使用WebClient的代码 eventhandler然后只显示内容,但e.Result抛出上述异常: void client_DownloadStringCompleted(object sender, DownloadStri

我正试图从WindowsPhone7应用程序中从这个url下载一个常规JSON字符串

我尝试使用WebClient和HttpWebRequest。他们都抛出了一个例外

“The remote server returned an error: NotFound”
这是使用WebClient的代码 eventhandler然后只显示内容,但e.Result抛出上述异常:

void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error == null && !e.Cancelled) MessageBox.Show(e.Result);
}
对于HttpWebRequest,我的代码如下所示: 通过以下回调:

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实际上在上述两种情况下都可以正常工作

此问题在模拟器和实际设备上都会发生

有什么不对劲吗?REST服务是否以错误的方式返回数据?我真的希望你能帮助我


注意:我没有同时运行Fiddler2

原因是该站点没有有效的证书。只需在移动Internet Explorer上试用,您将得到证书问题的提示

移动设备在SSL证书方面更为严格

如果要将此应用程序放入生产环境,则需要为此服务器编写包装(如果不是您自己的),或者获取有效证书。在短期内,为了进行测试,您可以将证书添加到设备中


你说你没有运行Fiddler,但你一直在使用它吗?这在模拟器上吗?仿真器是否试图通过Fiddler代理,但它没有运行?你救了我一天:)至少我现在知道是什么导致了问题,但是,事实证明,我还不能完全修复它。我无法更改Web服务器的根证书,事实证明,Web服务器的根证书不是WP7的默认受信任根证书的一部分。我不希望用户自己安装证书,那么有没有办法通过代码主动忽略SSL证书?(你提供的链接似乎没有详细说明…)谢谢@Zappel No.对于我正在从事的一个项目,我们将证书安装到我们的设备上进行测试,同时我们在应用程序上市之前购买了VeriSign(或w/e works For your company)证书。对,这也是我们的解决方案。我和我们正在使用的根证书的发行人谈过,他谈到了一个新的证书平台将在11月1日左右推出,在这个平台上,他们将能够在大屏幕上运行。你知道这个“平台”吗?@Zappel不,我什么都不知道。。。我想这取决于你是否计划在那时进入市场(4.5个月是相当遥远的…)
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);
}