2010-01-03 41 views
0

vb.net問題,我已經打了對POST'ing數據一堵牆,一個WebForm :( 下面是我改編自許多地方(這裏最近:http://p2p.wrox.com/asp-net-1-0-1-1-professional/34517-webrequest-webresponse-form-submit-problem-help.html)代碼發佈到Web表單

Dim url As String = "https://student.ashford.edu/student/" 
     Dim data As String = "username=myusername&password=mypassword" 
     Dim buffer As Byte() = Encoding.UTF8.GetBytes(data) 
     Dim result As String = "" 
     Dim req As HttpWebRequest = DirectCast(WebRequest.Create(url), HttpWebRequest) 
     req.Method = "POST" 
     req.ContentType = "application/x-www-form-urlencoded" 
     req.ContentLength = buffer.Length 
     req.CookieContainer = New CookieContainer() 
     ' enable cookies 
     Dim reqst As Stream = req.GetRequestStream() 
     ' add form data to request stream 
     reqst.Write(buffer, 0, buffer.Length) 
     reqst.Flush() 
     reqst.Close() 

     Console.WriteLine(vbLf & "Posting data to " & url) 
     Dim res As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse) 
     ' send request,get response 
     Console.WriteLine(vbLf & "Response stream is: " & vbLf) 
     Dim resst As Stream = res.GetResponseStream() 
     ' display HTTP response 
     Dim sr2 As New StreamReader(resst) 
     result = sr2.ReadToEnd() 
     Using writer As System.IO.StreamWriter = New StreamWriter("C:\Temp\checkcheck.html") 
      writer.Write(result) 
     End Using 

當我檢查checkcheck.html文件時,它並沒有顯示我成功登錄我的大學時通常看到的頁面,而是再次顯示登錄頁面,提示輸入用戶名和密碼。對於用戶/通過輸出響應,是否意味着什麼都沒有發佈?或者是登錄按鈕沒有被命中?

只要源中的字段名稱,用戶名字段的名稱是「用戶名」,密碼字段的名稱是「密碼」。從我所知道的,登錄按鈕本身的名稱是「提交」。以下是網頁的來源,我錯過了什麼?

查看源代碼:https://student.ashford.edu/student/
https://student.ashford.edu/student/

我希望有發生的是,在我的VB.NET後臺,我點擊一個按鈕,我的用戶名和密碼自動輸入和我很自動地記錄下來。一旦完成登錄,我想檢索已登錄頁面的HTML,以便我可以解析與我學習相關的項目。這可能是不相關的,但是如果我導航到其他頁面,是否需要cookie來保持我的應用程序「登錄」?

編輯: 我試圖插入不同的URL,無濟於事。我也嘗試添加submit = login和login = submit(當然是交替)POST數據。我仍然從最後的結果變量中獲取原始登錄屏幕HTML,而不是我通常在手動登錄後以人類身份登錄的大學主頁。也許有一個後續步驟,我失蹤了?

回答

0

我發現我需要做什麼。首先,我必須確保我有一個cookie容器。接下來,我使用Fiddler來準確找出在瀏覽器和我要登錄的位置之間來回發送的內容。我發佈了所有登錄信息,然後我收到回覆。這似乎用所需的身份驗證cookie填充我的cookie容器變量?接下來,我對我想去的頁面發出另一個POST請求,瞧 - 它的工作原理。

0

實際表單操作是https://student.ashford.edu/login/commands/login.php。您可以將其插入url。另外,請嘗試在值中包含提交按鈕 - submit=login

+0

這是我將數據發佈到哪裏?如在,我會將我的第一個URL變量設置爲該地址?我只是將這個地址插入到URL變量中,並且我得到了同樣的結果,將我轉回到登錄頁面。 – 2010-01-03 02:20:19