如果 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 不会被挂起。

希望对您有所帮助。