当Internet连接缓慢时:WebException-远程服务器返回错误:NotFound
本文关键字:服务器 返回 NotFound 错误 WebException- Internet 连接 缓慢 | 更新日期: 2023-09-27 18:20:50
我在我的应用程序中使用2个WebClients,用于2个不同天气的API。
当我的互联网连接很慢时,我会从API的一个获得一个异常。。它返回一个404 Notfound错误。
我已经通过禁用我的WiFi进行了测试,并将数据连接设置为"2G"。第一个API返回数据没有问题,但第二个API使用WebException使我的应用程序崩溃。
当我再次打开WiFi时,它可以完美地工作。第二个API似乎对缓慢的连接有点耐心。
有办法解决这个问题吗?我还尝试将WebClient更改为HttpWebRequest,但问题仍然存在。
谨致问候,Niels
编辑我的代码:
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
}
存在用于WP的HTTP客户端库,该库包含对超时的支持。关于它的文章。
Windows Phone 8:的一些示例代码
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
var httpClient = new HttpClient {Timeout = TimeSpan.FromSeconds(30)};
var responseBodyAsText = await httpClient.GetStringAsync("www.contoso.com");
}
也许问题不在于网络延迟。也许您的第二个API要求调用方发送一个用户字符串,或者您不发送的其他HTTP头。它可以通过WiFi而不是2G工作,这可能与以下事实有关:从WiFi网络连接的任何设备似乎与托管API的服务器相同(从IP地址的角度来看),并且可能允许基于某些缓存的身份进行访问(可能您浏览了该服务以在开发PC上对其进行测试)。我很想看看如果你连接到另一个WiFi网络,如果响应相似,会发生什么。
我的即时建议是捕获WebException并给用户一个重试的机会。
我本想把这作为一个评论来补充,但我想我没有足够的声誉。
尝试增加ServicePointManager.DefaultConnectionLimit,尽管默认值为2。