1

Web URL のページソースを取得するパブリック関数があります。これが関数です。

Public Function gethtml(ByVal id As Integer)
Try
                ListView1.Items(id).SubItems(6).Text = "Downloading HTML..."
                Dim Response3 As HttpWebResponse
                Dim pagesource3 As String
                Dim datastream As Stream
                Dim postdata As String = ""
                Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postdata)
                Dim Request3 As HttpWebRequest = HttpWebRequest.Create("http://mysite.com/ip.php")
                Request3.Referer = "http://google.com/"
                Request3.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
                Request3.KeepAlive = True
                Request3.Timeout = "5000"
                Request3.AllowAutoRedirect = True
                If useproxycheckbox.Checked = True Then
                    Dim words As String() = ListView1.Items(id).SubItems(9).Text.Split(New Char() {":"c})
                    Request3.Proxy = New WebProxy(words(0).ToString & ":" & words(1).ToString)
                    Request3.UseDefaultCredentials = False
                    Request3.Proxy.Credentials = New System.Net.NetworkCredential(words(2).ToString, words(3).ToString)
                End If
                Request3.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31"
                Request3.CookieContainer = CC
                Request3.Method = WebRequestMethods.Http.Get
                Request3.ContentType = "application/x-www-form-urlencoded"
                Response3 = Request3.GetResponse()
                Dim Stream3 As New StreamReader(Response3.GetResponseStream())
                pagesource3 = Stream3.ReadToEnd()
                Response3.Close()
                Stream3.Close()
                ListView1.Items(id).SubItems(4).Text = pagesource3

Catch e1 As ProtocolViolationException
    recheck(id)
    ListView1.Items(id).SubItems(6).Text = "Error1"
Catch e2 As WebException
    recheck(id)
    ListView1.Items(id).SubItems(6).Text = "Error2"

End Try
End Function

問題は、次のような最初の呼び出しで正常に動作することです

gethtml(0)

しかしその後、私が提供したプロキシを使用しません。最初のリクエストで使用されたのと同じプロキシを使用するだけです。メインスレッドでこれを使用するとUIがフリーズするため、スレッドを使用してこの関数を呼び出しています。私が間違っていることは何ですか?私はVB.netの初心者です

ありがとう。

更新: この問題は、USERNAME:PASSWORD 基本認証を持つプロキシでのみ発生することがわかりました。助けて!

4

0 に答える 0