Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest登录数据然后重定向_C#_Asp.net_Vb.net_Httpwebrequest_Httpwebresponse - Fatal编程技术网

C# HttpWebRequest登录数据然后重定向

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

我试图使用HttpwebRequest和Httpwebresponse通过POST登录到一个网站,然后在经过身份验证后将其重定向到新网站中的默认页面。我可以执行responsereader.ReadToEnd()操作,但我不确定如何获得自动重定向

     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

此处回答:[StackOverflow:维护状态][1][1]:我理解这一点,但不确定如何使其重定向?它应该自动重定向吗?客户端(HttpWebRequest)不重定向。服务器(IIS/ASP.NET)重定向。因此,您所要做的就是进行身份验证,填充cookiecontainer,然后向最终目标uri发出新请求,并确保重用cookiecontainer.my _repsonse.StatusCode=OK{200}和my _repsonse.Headers内容语言:en传输编码:分块缓存控制:私有内容类型:text/html;charset=UTF-8日期:2011年10月12日星期三15:51:10 GMT到期时间:1996年10月8日星期二08:00:00 GMT Set Cookie:JSESSIONID=abcKXoukfUu528qDi14lt;路径=/,郊狼-2-ac1f0273=ac1f022b:0;path=/Server:Resin/3.1.6_response.ResponseUri=“?”与上面相同,这是否应该是目标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)