HTTP Web请求适用于其他站点,但不适用于此站点。有什么想法吗?(VB.NET)
我正在用VB.NET编写一个程序,我的httpwebrequest代码有问题。我已经使用firefox的live HTTP头来获取正确的post数据,但由于某些原因,它不会登录 问题是,我为另一个类似的站点使用了相同的代码(只更改了post数据),它工作得很好 有什么想法吗?这是我的密码HTTP Web请求适用于其他站点,但不适用于此站点。有什么想法吗?(VB.NET),vb.net,cookies,httpwebrequest,postdata,Vb.net,Cookies,Httpwebrequest,Postdata,我正在用VB.NET编写一个程序,我的httpwebrequest代码有问题。我已经使用firefox的live HTTP头来获取正确的post数据,但由于某些原因,它不会登录 问题是,我为另一个类似的站点使用了相同的代码(只更改了post数据),它工作得很好 有什么想法吗?这是我的密码 Imports System.Windows.Forms Imports System.Net Imports System.IO Imports System.Text Imports System.Text
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
任何想法或建议都将不胜感激。登录在您显示的URL上是不同的。重定向到的URL与代码中的URL不同。很抱歉稍后再回复,但这也会帮助其他人 这是因为您缺少一个CookieContainer,这对于使用HTTP WEBREQUEST登录非常重要 这里是一个集邮教程!我使用相同的方法登录MYBB论坛、vBULLETIN和许多其他JOOMLA、WORDPRESS网站。。并且一次又一次地使用同一教程中的相同代码 代码如下:
Imports System.Net
Imports System.Text
Imports System.IO
Public Class Form1
Dim logincookie As CookieContainer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim postData As String = "referer=http%3A%2F%2Fforums.zybez.net%2Findex.php%3Fapp%3Dcore%26module%3Dglobal%26section%3Dlogin&username=" & TextBox1.Text & "&password=" & TextBox2.Text & "&rememberMe=1"
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://forums.zybez.net/index.php?app=core&module=global§ion=login&do=process"), HttpWebRequest)
postReq.Method = "POST"
postReq.KeepAlive = True
postReq.CookieContainer = tempCookies
postReq.ContentType = "application/x-www-form-urlencoded"
postReq.Referer = "http://forums.zybez.net/index.php?app=core&module=global§ion=login&do=process"
postReq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/4.0 (.NET CLR 3.5.30729)"
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())
End Sub
End Class
归功于“HowToStartProgramming.Com”我刚刚插入了“网站”来代替实际的URL。实际的URL是www.pof.com