HttpWebRequest和WebClient在Windows Phone 7上返回NotFound,但不是普通的控制台应用程序

时间:2012-06-14 12:03:01

标签: windows-phone-7 httpwebrequest webclient

我正在尝试从Windows Phone 7应用程序中从此网址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字符串返回没有问题,我可以将结果打印到控制台。

不同的网址 在WP7上工作

奇怪的是,URL http://mobiforge.com/rssfeed在上述两种情况下实际上都能正常工作。

在实际设备上的模拟器中都会出现此问题。

可能有什么不对? REST服务是否以不正常的方式返回数据?我真的希望你能帮助我!

注意:我没有同时运行Fiddler2!

1 个答案:

答案 0 :(得分:4)

原因是该网站没有有效的证书。只需在Mobile Internet Explorer上试用它,您就会收到有关证书问题的提示。

How to ignore SSL certificates

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

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

Here's a tool which might help you install a certificate.