Vb.net Can';t使用httpwebrequest加载页面

Vb.net Can';t使用httpwebrequest加载页面,vb.net,httpwebrequest,Vb.net,Httpwebrequest,我想从以下地址获取航班时刻表: {“BookingPathArguments”:null,“OriginDestinations”:[{“IsOpen”:false,“DataIdOrigin”:6337,“DataIdDestination”:6707,“DateTime”:“2016-04-27T00:00:00.000”;“TravelerTypes”:[{“DataId”:1,“TravelerCount”:1},{“DataId”:2,“TravelerCount”:0},{“Data

我想从以下地址获取航班时刻表:

{“BookingPathArguments”:null,“OriginDestinations”:[{“IsOpen”:false,“DataIdOrigin”:6337,“DataIdDestination”:6707,“DateTime”:“2016-04-27T00:00:00.000”;“TravelerTypes”:[{“DataId”:1,“TravelerCount”:1},{“DataId”:2,“TravelerCount”:0},{“DataId”:3,“TravelerCount”:0}],“Currency”:{“Code”:“BDT”;“PromoCode”:null,“DisplayRealAvailability”:false,“可见性”:0,“ExtendedSearchDayCount”:3}

如果您将地址粘贴到浏览器地址栏并使用firebug(或任何fiddler),您将看到此页面发送3个jquery ajax调用以获取日程安排

PostData:SaleConditionAccepted=false&ExtendedSearchDayCount=3&DoNotCheckCache=false&AlreadyLoggedIn=false&TempDataGuid=NVES1YV4XOia40CmotiXof1&CurrencyCode=BDT&FareBasisDayTaid=&Travelers[0][DataId]=1&Travelers[0][Count 1&UserSelectedDate[0][SelectedDate]=2016-04-27T00:00:00&UserSelectedDate[0][DataIdOrigin]=6337&UserSelections[0][DataIdDestination]=6707&UserSelections[0][GenericClassDataId]=&UserSelections[0][SelectedSegments]=&JsonPrepareBookingRequest=&PromCode=

我正在使用httpwebrequest发送请求,但由于未知原因,我错过了会话。我使用CookieContainer保存cookies。我使用以下函数发送httprequest:

    Public Function GetPostWP(ByVal Url As String, ByVal CkCont As CookieContainer, Optional ByVal PostData As String = "", Optional ByVal refSite As String = "") As String
    Dim pStr As String = ""
    Try
        Dim Http As HttpWebRequest = WebRequest.Create(Url)
        If refSite <> "" Then Http.Referer = refSite
        Http.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate")

        Http.CookieContainer = CkCont  'Initial CkCont is Nothing
        Http.KeepAlive = True
        Http.AllowAutoRedirect = True

        'Http.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6"
        Http.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
        Http.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36"

        If PostData <> "" Then
            Http.Method = "POST"
            Http.ContentLength = PostData.Length
            Http.ContentType = "application/x-www-form-urlencoded"

            Dim PostStream As StreamWriter = New StreamWriter(Http.GetRequestStream())
            PostStream.Write(PostData)
            PostStream.Close()
        End If

        Using WebResponse As HttpWebResponse = Http.GetResponse()
            Dim responseStream As Stream = WebResponse.GetResponseStream()

            If (WebResponse.ContentEncoding.ToLower().Contains("gzip")) Then
                responseStream = New GZipStream(responseStream, CompressionMode.Decompress)
            ElseIf (WebResponse.ContentEncoding.ToLower().Contains("deflate")) Then
                responseStream = New DeflateStream(responseStream, CompressionMode.Decompress)
            End If

            Dim reader As StreamReader = New StreamReader(responseStream, Encoding.Default)
            pStr = reader.ReadToEnd()

            responseStream.Close()
        End Using

        tmpCky = CkCont 'tmpCky is a Public CookieContainer Variable to hold cookies for future use.
        GetPostWP = pStr

    Catch ex As Exception
        GetPostWP = "Error : " & ex.Message
    End Try
End Function

    Dim Cky As New CookieContainer
    Dim Txt as String = GetPostWP(PostAddress, Cky, PostData, RefAdd)

    Cky = tmpCky
公共函数GetPostWP(ByVal Url作为字符串,ByVal CkCont作为CookieContainer,可选ByVal PostData作为字符串=”,可选ByVal refSite作为字符串=”)作为字符串
Dim pStr As String=“”
尝试
Dim Http作为HttpWebRequest=WebRequest.Create(Url)
如果是refSite“”,则Http.Referer=refSite
Add(HttpRequestHeader.AcceptEncoding,“gzip,deflate”)
Http.CookieContainer=CkCont'初始CkCont为空
Http.KeepAlive=True
Http.AllowAutoRedirect=True
'Http.UserAgent=“Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.9.2)Gecko/20100115 Firefox/3.6”
Http.Accept=“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8“
Http.UserAgent=“Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/34.0.1847.137 Safari/537.36”
如果PostData为“”,则
Http.Method=“POST”
Http.ContentLength=PostData.Length
Http.ContentType=“应用程序/x-www-form-urlencoded”
Dim PostStream As StreamWriter=新StreamWriter(Http.GetRequestStream())
PostStream.Write(PostData)
PostStream.Close()
如果结束
使用WebResponse作为HttpWebResponse=Http.GetResponse()
Dim responseStream As Stream=WebResponse.GetResponseStream()
如果(WebResponse.ContentEncoding.ToLower().包含(“gzip”)),则
responseStream=New GZipStream(responseStream,CompressionMode.decompresse)
ElseIf(WebResponse.ContentEncoding.ToLower().Contains(“deflate”))然后
responseStream=新的放气流(responseStream,压缩模式。解压缩)
如果结束
Dim reader As StreamReader=新StreamReader(responseStream,Encoding.Default)
pStr=reader.ReadToEnd()
responseStream.Close()
终端使用
tmpCky=CkCont'tmpCky是一个公共CookieContainer变量,用于保存Cookie以备将来使用。
GetPostWP=pStr
特例
GetPostWP=“错误:”&ex.消息
结束尝试
端函数
Dim Cky作为新的CookieContainer
Dim Txt as String=GetPostWP(PostAddress、Cky、PostData、RefAdd)
Cky=tmpCky

有人可以分析该页面吗?

您是否尝试过不使用“Http.KeepAlive=True”我尝试过,但没有成功。该页面突然创建了一个RequestVerificationToken Cookie,这是我使用httpwebrequest无法获得的。是否有创建此Cookie的脚本?是否有专家?请回答。