C# HttpWebRequest登录数据然后重定向
我试图使用HttpwebRequest和Httpwebresponse通过POST登录到一个网站,然后在经过身份验证后将其重定向到新网站中的默认页面。我可以执行responsereader.ReadToEnd()操作,但我不确定如何获得自动重定向C# HttpWebRequest登录数据然后重定向,c#,asp.net,vb.net,httpwebrequest,httpwebresponse,C#,Asp.net,Vb.net,Httpwebrequest,Httpwebresponse,我试图使用HttpwebRequest和Httpwebresponse通过POST登录到一个网站,然后在经过身份验证后将其重定向到新网站中的默认页面。我可以执行responsereader.ReadToEnd()操作,但我不确定如何获得自动重定向 Dim ccContainer As New CookieContainer() Dim encoding As New ASCIIEncoding() Dim strId As String
Dim ccContainer As New CookieContainer()
Dim encoding As New ASCIIEncoding()
Dim strId As String = "username"
Dim strName As String = "password"
Dim postData As String = "UAPMURL=&UAPMURLxx=xx&login=" & strId
postData += ("&password1=" & strName)
Dim data As Byte() = encoding.GetBytes(postData)
' Prepare web request...
Dim myRequest As HttpWebRequest = DirectCast(WebRequest.Create("http://www.LOGINURLHERE.COM/LOGIN.PHP?"), HttpWebRequest)
Dim cc As New CookieContainer
' <<--- This is the key word of the day
myRequest.Method = "POST"
myRequest.AllowAutoRedirect = False
myRequest.ContentType = "application/x-www-form-urlencoded"
myRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
myRequest.KeepAlive = True
myRequest.CookieContainer = New CookieContainer()
myRequest.ContentLength = data.Length
Dim newStream As Stream = myRequest.GetRequestStream()
' Send the data.
newStream.Write(data, 0, data.Length)
newStream.Close()
Dim _response As HttpWebResponse = DirectCast(myRequest.GetResponse(), HttpWebResponse)
If myRequest.HaveResponse Then
For Each retCookie As Cookie In _response.Cookies
cc.Add(retCookie)
Next
End If
Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://www.DESTINATIONURL.COM/Main.php"), HttpWebRequest)
request.CookieContainer = cc
request.AllowAutoRedirect = False
Dim _res As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
使用这些…它读取并用目标URL中的数据填充我的当前页面。我是不是错过了一些东西让它自动重定向?谢谢
Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://www.destinationurl.com"), HttpWebRequest)
request.CookieContainer = cc
request.AllowAutoRedirect = False
Dim responseReader As New StreamReader(request.GetResponse().GetResponseStream())
Dim responseData As String = responseReader.ReadToEnd()
responseReader.Close()
Response.Write(responseData)
你不会改变方向;服务器重定向
- 如果服务器向您发送重定向响应(code=3xx),您将请求它将您重定向到的URL李>
- 如果重定向是透明处理的,则
将包含重定向到的地址。如果没有,您必须阅读重定向标题并自行决定是否请求新页面\u response.ResponseURI
- 如果服务器根本没有重定向,那么在获得身份验证cookie后,您只需要请求所需的URL
_response.ResponseUri
,顺便问一下,如果要自动重定向,为什么要设置myRequest.AllowAutoRedirect=False
我之前已将AllowAutoRedirect更改为true,但我遇到了相同的问题。我如何#3在获得cookie后请求我想要的URL?我这样做了,但它没有重定向,它只是用新的请求值填充页面。我想重定向它。代码片段?谢谢
Dim request As HttpWebRequest = DirectCast(WebRequest.Create("http://www.destinationurl.com"), HttpWebRequest)
request.CookieContainer = cc
request.AllowAutoRedirect = False
Dim responseReader As New StreamReader(request.GetResponse().GetResponseStream())
Dim responseData As String = responseReader.ReadToEnd()
responseReader.Close()
Response.Write(responseData)