VB.NET - 中止从HttpWebRequest获取响应

时间:2017-06-26 16:20:23

标签: vb.net httpwebrequest httpwebresponse abort webresponse

当HttpWebResponse仍在加载进度时,是否有任何停止代码运行的方法?

例如,我运行此代码,我确定它需要10秒才能得到回复:

Dim urlAddress As String = "https://google.com"
Dim request As HttpWebRequest = DirectCast(WebRequest.Create(urlAddress), HttpWebRequest)
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)

现在,当请求得到响应时...例如在第二个4我将按下停止按钮,该按钮将中止获取响应并且它将弹出一个MessageBox。

 Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
       HttpWebResponseName.Abort()
       MessageBox.Show("Done!")
End Sub

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来这段代码旨在运行客户端。请记住,从客户端的角度来看,您发送请求并接收响应。响应来自服务器,因此您无法控制它。相反,您可以在响应中中止请求 结果(因此您需要保留对该请求的挂钩才能中止它):

Private _activeRequest As HttpWebRequest
'...  other member-level code here

然后,您创建请求的代码可以更新为:

Dim urlAddress As String = "https://google.com"
_activeRequest =  DirectCast(WebRequest.Create(urlAddress), HttpWebRequest)
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)

这将使您的点击事件方法如下所示:

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
    _activeRequest.Abort()
    MessageBox.Show("Done!")
End Sub