我正在使用Web客户端向服务器发送一些请求参数,然后根据请求获得响应。但是,当我尝试发送Web客户端请求时,我面临的问题是,如果Internet在发送请求时断开连接,它将挂起我的应用程序。有时它会崩溃应用程序。 我的代码段在下面给出。
WebClient webClient=new WebClient()
userData = webClient.UploadValues(URL, "POST", parameters);
`
如果因特网断开连接而执行该行,则会挂起应用程序。
答案 0 :(得分:0)
您可以扩展WebClient,因此它会超时。试试这个:
class WebClientWithTimeout : WebClient {
public WebClientWithTimeout(int timeout) {
_timeout = timeout
}
// Timeout in seconds
int _timeout;
protected override WebRequest GetWebRequest(Uri uri) {
WebRequest webRequest = base.GetWebRequest(uri);
webRequest.Timeout = 1000 * _timeout;
return w;
}
}
答案 1 :(得分:0)
private class YourWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest wr = base.GetWebRequest(uri);
wr.Timeout = 7 * 1000;
return wr;
}
}
您可以根据需要更改超时。我测试了它,它对我有用。实际上webclient
默认超时为100秒,但默认情况下大约需要20到25或30秒。因此,根据您的回答更改它,您知道服务器需要多长时间。
您还可以使用threads
独立处理此代码,UI
不会被绞死。
希望它会有所帮助。