【发布时间】:2013-07-16 22:29:21
【问题描述】:
我在我的应用中使用 2 个 WebClients,用于 2 个不同的天气 API。
当我的互联网连接速度很慢时,我从其中一个 API 中得到一个异常。它返回一个 404 Notfound 错误。
我已经通过禁用 WiFi 进行了测试,并将数据连接设置为“2G”。第一个 API 毫无问题地返回数据,但是第二个 API 使我的应用程序因 WebException 而崩溃。
当我再次打开 WiFi 时,它可以完美运行。看起来第二个 API 对慢速连接没有耐心。
有没有办法解决这个问题?我也试过把 WebClient 改成 HttpWebRequest 但问题还是出现了。
亲切的问候, 尼尔斯
编辑 我的代码:
private void GettingTheData()
{
WebClient Client = new WebClient();
Client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Client _DownloadStringCompleted);
Client.DownloadStringAsync(new Uri("http://theURI.com"));
}
void Client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
string result = e.Result.ToString();
// Let's do the cool stuff overhere
}
【问题讨论】:
-
您能否发布您用于客户端/网络请求的代码
-
不是一个解决方案,但您确定您确实从手机获得了有效的连接吗?我发现建立 2G 连接可能需要很长时间。我总是通过在移动 IE 中浏览已知网站来进行交叉检查。你真的应该处理
WebException,顺便说一下这种情况。 -
是的,我确实有一个有效的连接,因为其他 Weather API 确实可以工作.. 慢,但它可以工作。看起来,当连接速度很慢时,API 的服务器无法正常工作,只是断开了连接。这导致了 WebException。我在第一篇文章中添加了我的代码。
-
老兄,你不会从慢速连接中得到 404。 404 表示请求已发送到 Web 服务器,而 Web 服务器表示未找到该文件。你能捕捉到完整的响应和请求吗?更有可能您正在访问其他机器,而不是使用 Web 服务的机器。
-
@Niels,HttpWebRequest.Timeout 属性绝对可以解决您的问题......但它在 Windows 手机上不存在。你可以试试this,也许会奏效。
标签: c# performance windows-phone-7 windows-phone-8