首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest登录数据然后重定向

问HttpWebRequest登录数据然后重定向
EN

Stack Overflow用户
提问于 2011-10-11 19:29:16
回答 1查看 5.3K关注 0票数 2

我试图使用HttpwebRequest和Httpwebresponse通过POST登录到一个网站,然后一旦通过认证,就可以将其重定向到新站点中的默认页面。我可以做一个responsereader.ReadttoEnd() put,不确定如何获得一个自动重定向。

代码语言:javascript
复制
     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)

如果我这么做..。

注释掉这一行

代码语言:javascript
复制
 'Dim _res As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)

使用these...it读取并将来自目标URL的数据填充到当前页面。我是不是漏了什么东西让它自动重定向?谢谢

代码语言:javascript
复制
   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)
EN

回答 1

Stack Overflow用户

发布于 2011-10-11 19:44:52

您不重定向;服务器重定向。

如果服务器向您发送重定向响应(

  • ,code=3xx),则请求它重定向到的URL。如果重定向被透明地处理,则
  • 将包含重定向到的地址。如果没有,您必须读取重定向头,并决定是否请求新页面。
  • (如果服务器根本没有重定向),您只需要在获得身份验证cookie之后请求任何您想要的URL。

。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7731422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档