如果 Internet 在执行时断开连接,Web 客户端请求将被挂起
Web client request gets hanged if Internet is disconnected while executing it using
我正在使用网络客户端向服务器发送一些请求参数,然后根据请求获得响应。但是当我每次尝试发送 Web 客户端请求时我面临的问题是,如果在发送请求时互联网断开连接,它会挂起我的应用程序。有时它会使应用程序崩溃。
我的代码片段如下。
WebClient webClient=new WebClient()
userData = webClient.UploadValues(URL, "POST", parameters);
`
在执行该行时,如果 Internet 断开连接,它会挂起应用程序。
您可以扩展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;
}
}
private class YourWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest wr = base.GetWebRequest(uri);
wr.Timeout = 7 * 1000;
return wr;
}
}
您可以根据需要更改超时时间。我已经测试过了,它对我有用。实际上 webclient
默认超时是 100 秒,但在 default.So 中大约需要 20 到 25 或 30 秒,您可以根据您知道从服务器花费多少时间的响应来更改它。
您也可以使用 threads
独立运行此代码,您的 UI
不会被挂起。
希望对您有所帮助。
我正在使用网络客户端向服务器发送一些请求参数,然后根据请求获得响应。但是当我每次尝试发送 Web 客户端请求时我面临的问题是,如果在发送请求时互联网断开连接,它会挂起我的应用程序。有时它会使应用程序崩溃。 我的代码片段如下。
WebClient webClient=new WebClient()
userData = webClient.UploadValues(URL, "POST", parameters);
`
在执行该行时,如果 Internet 断开连接,它会挂起应用程序。
您可以扩展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;
}
}
private class YourWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest wr = base.GetWebRequest(uri);
wr.Timeout = 7 * 1000;
return wr;
}
}
您可以根据需要更改超时时间。我已经测试过了,它对我有用。实际上 webclient
默认超时是 100 秒,但在 default.So 中大约需要 20 到 25 或 30 秒,您可以根据您知道从服务器花费多少时间的响应来更改它。
您也可以使用 threads
独立运行此代码,您的 UI
不会被挂起。
希望对您有所帮助。