【发布时间】:2012-06-03 05:23:45
【问题描述】:
我正在用 VB.NET 编写程序,但我的 httpwebrequest 代码有问题。我已经为 Firefox 使用了实时 HTTP 标头来获取正确的发布数据,但由于某种原因它无法登录。
问题是,我在另一个类似网站上使用了相同的代码(仅更改帖子数据)并且效果很好。
有什么想法吗?这是我的代码...
Imports System.Windows.Forms
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.ComponentModel
Imports System.Threading
Public Class Form1
Dim logincookie As CookieContainer
Dim html As String = "BGW still running"
Private Sub cmdStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdStart.Click
Dim username As String = "username"
Dim password As String = "password"
Dim postData As String = "url=&username=" + username + "&password=" + password + "&login=Check+Mail%21"
Dim tempcookies As New CookieContainer
Dim encoding As New UTF8Encoding
Dim bytedata As Byte() = encoding.GetBytes(postData)
Dim postReq As HttpWebRequest = DirectCast(WebRequest.Create("http://www.website.com/inbox.aspx?login"), HttpWebRequest)
postReq.Method = "POST"
postReq.KeepAlive = True
postReq.CookieContainer = tempcookies
postReq.ContentType = "application/x-ww-form-urlencoded"
postReq.Referer = "http://www.website.com/inbox.aspx?login"
postReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20100101 Firefox/11.0"
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 matchCount As Integer = 0
Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("http://www.website.com/editprofile.aspx")
request.CookieContainer = logincookie
Dim response As System.Net.HttpWebResponse = request.GetResponse
Dim reader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
html = reader.ReadToEnd
End Sub
End Class
感谢任何想法或建议。
【问题讨论】:
标签: vb.net cookies httpwebrequest postdata