0

每当使用 WebRequest 测试互联网连接时都可以正常工作。但是,当我尝试连接到互联网(关闭 wifi 后)并获得wifi 的状态时,"no access to internet"如果我再次执行 webrequest,它就无法正常工作。我已经调试并发现问题完全在线:

objResp = objWebReq.GetResponse

它只需要很长时间并且不会完成。

下面是测试连接的函数:

Dim objUrl As New System.Uri("http://www.google.com")
Dim objWebReq As System.Net.WebRequest
objWebReq = System.Net.WebRequest.Create(objUrl)
Dim objResp As System.Net.WebResponse = Nothing
Try ' Attempt to get response and return True
   objResp = objWebReq.GetResponse
   objResp.Close()
   objWebReq = Nothing
   Return True
 Catch ex As Exception
        objResp = Nothing
        objResp.Close()
        objWebReq = Nothing
        Return False
 End Try

因此,如果用户陷入这种情况(我们希望用户不会),我正在考虑等待 5 秒来完成,如果它没有得到响应,就停止objWebReq.GetResponse然后返回 False。但最大的问题是:

如何测量 objWebReq.GetResponse 的时间并等待 5 秒,如果中断时间超过 5 秒并返回 false 否则返回 true ?

4

1 回答 1

2

您可以将请求设置为 5 秒后超时。

有关完整详细信息,请参阅WebRequest.Timeout

如果发生超时,将引发异常,您应该捕获并正确处理。

后代类通过抛出一个将 Status 字段设置为 WebExceptionStatus.Timeout 的 WebException 来发出超时信号。当 Timeout 设置为 Timeout.Infinite 时,后代类不会超时。

于 2013-10-18T20:47:35.987 回答