请问我模拟登录到一个页面后,我想取另外一个的URL路径的值应该怎么获取?

时间:2022-11-25 22:33:40
我目前用httprequest模拟登录一个页面,已经成功登录到该页面。但是我先想取另一个url路径的值。就是https://trade.ctrip.com/Flight/_version0805/_Handlers/AjaxHandler.aspx?AirLine=&ArrivePort=PVG&DepartPort=INC&EffectDate=2015-10-21&ExpiryDate=2015-10-22&GoSubClass=&ProductTypeName=ALL&ProductTypes=%3BBusinessPriority%3BPremiumEconomy%3BFullEconomy%3BDiscountBusiness%3BDiscountFirstClass%3BFullBusiness%3BFullFirstClass%3BApplySpecial%3BTravelPackage%3BPriorityPackage%3BLimited%3BAirLineMarketing&QueryType=1&pno=1&types=lowprice-query
这个我在浏览器上面,返回的是一串json格式的数据,在浏览器上面的话,只有在登录成功之后,才会取到正确的json数据。如果不登录就取不到。

6 个解决方案

#1


另外这是模拟登录的代码

CookieContainer cc = new CookieContainer();
            string postData = "preurl=http%3a%2f%2ftrade.ctrip.com%2fFlight%2f_version0805%2fLowPricePolicy%2fPolicyLowPrice.aspx%3fheadtype%3ddomestic&__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWBwLgz7XPCgKl1bK4CQK1qbSRCwKY2YWXBgK9n9bWAwKC3IeGDALV9NH%2FCJVjDRCZ1OaFCFR3%2Bj8s5DrbVa5%2F&__LASTFOCUS=&__VIEWSTATE=%2FwEPDwUKMTQyMDE0OTkzOGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFC2NrYlVzZXJSdWxlNs7IZVcL7ooltdDbVYOKhXAHLr4%3D&btnLogin=%E7%99%BB%20%E5%BD%95&hidErrorCount=0&txtCheckCode=";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(new Uri("https://trade.ctrip.com/Flight/Default.aspx"));
            webRequest2.CookieContainer = cc;
            webRequest2.Method = "POST";
            webRequest2.ContentType = "application/x-www-form-urlencoded";
            webRequest2.ContentLength = byteArray.Length;
            Session.Add("ccc", cc);
            Stream newStream = webRequest2.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);    //写入参数
            newStream.Close();

            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();
            StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.UTF8);
            return sr2.ReadToEnd();

#2


那你用登录成功后返回的Cookies 带入到你所需的另一个URL 再请求一次这个URL

#3


你确认?我用携程测试账号登陆了,但获取到的还是一模一样的json

#4


引用 2 楼 wyd1520 的回复:
那你用登录成功后返回的Cookies 带入到你所需的另一个URL 再请求一次这个URL

额,请问应该怎么做呢?新手。。。。最近才琢磨这些东西的 - -

#5


引用 3 楼 starfd 的回复:
你确认?我用携程测试账号登陆了,但获取到的还是一模一样的json

对呀,如果登录之后,再输入这个,得到的是这样的 请问我模拟登录到一个页面后,我想取另外一个的URL路径的值应该怎么获取?
如果没有登录的话,请求个URL,获取的应该是{"Message":"1000000000"}这个吧

#6


求大神,求大神 = =

#1


另外这是模拟登录的代码

CookieContainer cc = new CookieContainer();
            string postData = "preurl=http%3a%2f%2ftrade.ctrip.com%2fFlight%2f_version0805%2fLowPricePolicy%2fPolicyLowPrice.aspx%3fheadtype%3ddomestic&__EVENTARGUMENT=&__EVENTTARGET=&__EVENTVALIDATION=%2FwEWBwLgz7XPCgKl1bK4CQK1qbSRCwKY2YWXBgK9n9bWAwKC3IeGDALV9NH%2FCJVjDRCZ1OaFCFR3%2Bj8s5DrbVa5%2F&__LASTFOCUS=&__VIEWSTATE=%2FwEPDwUKMTQyMDE0OTkzOGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFC2NrYlVzZXJSdWxlNs7IZVcL7ooltdDbVYOKhXAHLr4%3D&btnLogin=%E7%99%BB%20%E5%BD%95&hidErrorCount=0&txtCheckCode=";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(new Uri("https://trade.ctrip.com/Flight/Default.aspx"));
            webRequest2.CookieContainer = cc;
            webRequest2.Method = "POST";
            webRequest2.ContentType = "application/x-www-form-urlencoded";
            webRequest2.ContentLength = byteArray.Length;
            Session.Add("ccc", cc);
            Stream newStream = webRequest2.GetRequestStream();
            newStream.Write(byteArray, 0, byteArray.Length);    //写入参数
            newStream.Close();

            HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();
            StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.UTF8);
            return sr2.ReadToEnd();

#2


那你用登录成功后返回的Cookies 带入到你所需的另一个URL 再请求一次这个URL

#3


你确认?我用携程测试账号登陆了,但获取到的还是一模一样的json

#4


引用 2 楼 wyd1520 的回复:
那你用登录成功后返回的Cookies 带入到你所需的另一个URL 再请求一次这个URL

额,请问应该怎么做呢?新手。。。。最近才琢磨这些东西的 - -

#5


引用 3 楼 starfd 的回复:
你确认?我用携程测试账号登陆了,但获取到的还是一模一样的json

对呀,如果登录之后,再输入这个,得到的是这样的 请问我模拟登录到一个页面后,我想取另外一个的URL路径的值应该怎么获取?
如果没有登录的话,请求个URL,获取的应该是{"Message":"1000000000"}这个吧

#6


求大神,求大神 = =