2

これが私のコードです。私はまだnubeなので、書くのに永遠にかかりました。

Imports System.Net
Imports System.Text
Imports System.IO

Public Class Form1

Dim logincookie As CookieContainer

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles      Button1.Click

    Dim postdata As String = "action=do_login&url=https%3A%2F%2Fforum.suprbay.org% 2F&quick_login=1&quick_username=USERNAME&quick_password=PASSWORD&submit=Login&quick_remember=yes"
    Dim tempcookies As New CookieContainer
    Dim encoding As New UTF8Encoding
    Dim bytedata As Byte() = encoding.GetBytes(postdata)
    Dim postreq As HttpWebRequest = DirectCast(WebRequest.Create("https://forum.suprbay.org/member.php"), HttpWebRequest)

    postreq.Method = "POST"
    postreq.KeepAlive = True
    postreq.CookieContainer = tempcookies
    postreq.ContentType = "application/x-www-forum-urlencoded"
    postreq.Referer = "https://forum.suprbay.org/member.php"
    postreq.UserAgent = "Mozilla/5.0 (Windows NT 6.2; rv:9.0.1) Gecko/20100101  Firefox/9.0.1"
    postreq.ContentLength = bytedata.Length

    Dim postreqstream As Stream = postreq.GetRequestStream()
    postreqstream.Write(bytedata, 0, bytedata.Length)
    postreqstream.Close()
    Dim postresponse As HttpWebResponse
    postresponse = DirectCast(postreq.GetResponse(), HttpWebResponse)

    tempcookies.Add(postresponse.Cookies)
    logincookie = tempcookies

    Dim postreqreader As New StreamReader(postresponse.GetResponseStream)
    Dim thepage As String = postreqreader.ReadToEnd

    RichTextBox1.Text = thepage

    End Sub

End Class

それを実行してボタンをクリックすると、次のエラーが発生します。

「基になる接続が閉じられました:SSL/TLSのセキュリティで保護されたチャネルの信頼関係を確立できませんでした。」

トレントWebサイトであるPirateBay.Seの公式フォーラムで、通常のブラウザでアクセスすると信頼証明書に関する警告が表示されるので、エラーが発生するのではないでしょうか。アプリケーションが機能するように、信頼証明書などを無視するにはどうすればよいですか?

4

1 に答える 1

9

この行は、接続の信頼エラーを無視する必要があります。接続を試みる前に、これを実行してください。

ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateRemoteCertificate

クラスでもこれを定義する必要があります。

   Public Shared Function ValidateRemoteCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
        Return True
    End Function

これがVB.Netへの完全な翻訳ではない場合は申し訳ありませんが、私はもともとC#でこれを持っていました。

編集:

はい、そういうわけであなたはこのエラーを受け取ります、彼らが持っている証明書は期限切れです。

于 2012-08-09T20:39:12.860 に答える