VB.net HttpWebRequest 超时

VB.net HttpWebRequest TimeOut

提问人:KoRo 提问时间:8/17/2023 最后编辑:KoRo 更新时间:8/17/2023 访问量:73

问:

我在使用HttpClient时遇到了一些问题。 我计划提出几个 Web 请求,主要是 GET 和 POST。 几年前,我能够毫无顾虑地做到这一点,在那里我想再次做一个小项目,只是它不再起作用了:程序冻结(因为它不是异步的,但我并不真正关心这一点)并给我发送超时。 在那里,我使用的是 HttpClient,据我所知,它比 HttpWebRequest 更安全,因为在此之前我使用的是 HttpWebRequest。 所以代码问题或其他,我真的不知道.. 我尝试了几个主机,但一直都是一样的。 在那里,测试是用 youtube 进行的。它必须向我展示答案,所以页面的源代码在逻辑上。

以下是使用的代码:

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    MsgBox(WRequest("https://www.youtube.com/", "GET", ""))
    'WRequest("http://", "POST", "name=jane&stat=active")
End Sub
Function WRequest(URL As String, method As String, POSTdata As String) As String
    Dim responseData As String = ""
    Try
        Dim cookieJar As New Net.CookieContainer()
        Dim hwrequest As Net.HttpWebRequest = Net.WebRequest.Create(URL)
        hwrequest.CookieContainer = cookieJar
        hwrequest.Accept = "*/*"
        hwrequest.AllowAutoRedirect = True
        hwrequest.UserAgent = "http_requester/0.1"
        hwrequest.Timeout = 600
        hwrequest.Method = method
        If hwrequest.Method = "POST" Then
            hwrequest.ContentType = "application/x-www-form-urlencoded"
            Dim encoding As New Text.ASCIIEncoding() 'Use UTF8Encoding for XML requests
            Dim postByteArray() As Byte = encoding.GetBytes(POSTdata)
            hwrequest.ContentLength = postByteArray.Length
            Dim postStream As IO.Stream = hwrequest.GetRequestStream()
            postStream.Write(postByteArray, 0, postByteArray.Length)
            postStream.Close()
        End If
        Dim hwresponse As Net.HttpWebResponse = hwrequest.GetResponse()
        If hwresponse.StatusCode = Net.HttpStatusCode.OK Then
            Dim responseStream As IO.StreamReader =
              New IO.StreamReader(hwresponse.GetResponseStream())
            responseData = responseStream.ReadToEnd()
        End If
        hwresponse.Close()
    Catch e As Exception
        responseData = "An error occurred: " & e.Message
    End Try
    Return responseData
End Function 
End Class
C# vb.net 请求 超时 httpwebrequest

评论

1赞 Jimi 8/17/2023
这里没有任何与 HttpClient 相关的内容 -- 删除这个: ,非常不合适。默认值是 -- 不是异步的,但我真的不在乎:你这样做hwrequest.Timeout = 600100,000
1赞 Jimi 8/17/2023
顺便说一句,设置为 .你也关心这个Option StrictON
0赞 KoRo 8/17/2023
所以我照你说的做了。但实际上它从一开始就起作用了,问题来自在 MsgBox 中显示响应,它没有显示它。在那里,我将其显示在 richtextbox 中,但显示结果大约需要 15 秒,这对于一个简单的 GET 请求来说是巨大的,因为我知道我有一个非常好的互联网连接,在我的浏览器中它几乎是即时的。再次感谢您的帮助!PS:我刚刚在调试时看到几乎立即收到响应,问题主要来自在richtextbox中快速显示响应。

答: 暂无答案