Request web pages pretected be login page (VB.NET)

' Set the initial parameters
        Dim UserID As String = "myUsername" ' Username
        Dim PWord As String = "myPassword" ' Password
        Dim domain As String = "http://myDomain/secure"
        
Dim encoding As New System.Text.ASCIIEncoding
        
Dim CookieC As New Net.CookieContainer

        
' Use the appropriate HTML field names to stuff into the post header
        Dim PostData As String = _
            
"txtUName=" & UserID & _
            
"&txtPWord=" & PWord ' Note: where txtUName & txtPWord are the field names
        Dim Data() As Byte = encoding.GetBytes(PostData)

        
' Initialise the request
        Dim LoginReq As Net.HttpWebRequest = Net.WebRequest.Create(domain & "default.asp"' Login location taken from the form action
        With LoginReq
            .KeepAlive 
= False
            .Method 
= "POST"
            
' Note: if the page uses a redirect if will fail
            .AllowAutoRedirect = False
            .ContentType 
= "application/x-www-form-urlencoded"
            .ContentLength 
= Data.Length
            
' Set empty container
            .CookieContainer = CookieC
        
End With

        
' Add the POST data
        Dim SendReq As IO.Stream = LoginReq.GetRequestStream
        SendReq.Write(Data, 
0, Data.Length)
        SendReq.Close()

        
' Obtain the response
        Dim LoginRes As Net.HttpWebResponse = LoginReq.GetResponse()

        
' Retreive the headers from the request (e.g. the location header)
        Dim Redirect As String = LoginRes.Headers("Location")
        
' Add any returned cookies to the cookie collection
        CookieC.Add(LoginRes.Cookies)

        
' Move to the redirected page as a GET request
        LoginReq = Net.WebRequest.Create(domain & Redirect)
        
With LoginReq
            .KeepAlive 
= False
            .Method 
= "GET"
            .ContentType 
= "application/x-www-form-urlencoded"
            .AllowAutoRedirect 
= True
            .CookieContainer 
= CookieC
        
End With

        
' Perform the navigate and output the HTML
        LoginRes = LoginReq.GetResponse()
        
Dim sReader As IO.StreamReader = New IO.StreamReader(LoginRes.GetResponseStream)
        
Dim HTML As String = sReader.ReadToEnd
        Debug.Write(HTML)
posted @ 2005-11-10 23:18 dawave 阅读(...) 评论(...) 编辑 收藏