Vb.net HttpWebRequestCookie赢得';不要转到另一页

Vb.net HttpWebRequestCookie赢得';不要转到另一页,vb.net,httprequest,Vb.net,Httprequest,我试着用几种方法来解决这个问题,但我无法让它发挥作用。下面的代码成功地允许用户使用按钮1登录,正如我在richtextbox中看到的那样。但是,当我按按钮2将我指向网站上的其他页面时,用户不会保持登录状态。正如您在下面看到的,我尝试通过logincookie,但没有成功。我如何解决这个问题 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Cl

我试着用几种方法来解决这个问题,但我无法让它发挥作用。下面的代码成功地允许用户使用按钮1登录,正如我在richtextbox中看到的那样。但是,当我按按钮2将我指向网站上的其他页面时,用户不会保持登录状态。正如您在下面看到的,我尝试通过logincookie,但没有成功。我如何解决这个问题

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

    Try
        'Logon
        PostData = "username=" & TextBox1.Text & "&password=" & TextBox2.Text
        LogonPage(ConnectURL, logincookie, PostData)

    Catch ex As Exception
        MsgBox(ex.Message.ToString)
    End Try
End Sub


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

Public Class Form1
    Dim logincookie As CookieContainer
    Const ConnectURL = "http://www.example.com/test/login.php"
    Const HomeURL = "http://www.example.com/test/"

    Private Sub LogonPage(ByVal URL As String, ByRef logincookie As CookieContainer, ByVal PostData As String)
        Dim reader As StreamReader
        Dim tempCookies As New CookieContainer
        Dim Request As HttpWebRequest = HttpWebRequest.Create(URL)

        Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"
        Request.CookieContainer = tempCookies
        Request.AllowAutoRedirect = True
        Request.ContentType = "application/x-www-form-urlencoded"
        PostData = "username=" & TextBox1.Text & "&password=" & TextBox2.Text
        Request.Method = "POST"
        Request.ContentLength = PostData.Length

        Dim requestStream As Stream = Request.GetRequestStream()
        Dim postBytes As Byte() = Encoding.ASCII.GetBytes(PostData)

        requestStream.Write(postBytes, 0, postBytes.Length)
        requestStream.Close()

        Dim Response As HttpWebResponse = Request.GetResponse()
        tempCookies.Add(Response.Cookies)
        logincookie = tempCookies

        Dim sr As System.IO.StreamReader = New System.IO.StreamReader(Response.GetResponseStream())
        Dim sourcecode As String = sr.ReadToEnd()
        RichTextBox1.Text = sourcecode
        reader = New StreamReader(Response.GetResponseStream())

        Response.Close()
        If InStr(sourcecode, "Username or password is invalid") Then
            MsgBox("Usename or password incorrect")
        Else
            MsgBox("logged in succesfully")
        End If

    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim reader As StreamReader

        Dim Request As HttpWebRequest = HttpWebRequest.Create("http://example.com/test/user_settings.php")
        Request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"

        Request.CookieContainer = logincookie
        Dim Response As HttpWebResponse = Request.GetResponse()
        reader = New StreamReader(Response.GetResponseStream())
        Dim theusercp As String = reader.ReadToEnd

        RichTextBox1.Text = theusercp

    End Sub

一些提示:您不需要
ex.Message.ToString()
,因为
ex.Message
已经是一个字符串。另外,如果您显示异常是为了进行故障排除,那么您应该显示
ex.ToString()
,它会为您提供所有详细信息。好的,谢谢,我删除了ex.message.ToString(),对我的上述问题有什么想法吗?尝试在类级别使用单个
CookieContainer
,每个
Sub
都没有一个。已经尝试过了,但没有成功