这个我在浏览器上面,返回的是一串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
额,请问应该怎么做呢?新手。。。。最近才琢磨这些东西的 - -
#5
对呀,如果登录之后,再输入这个,得到的是这样的
如果没有登录的话,请求个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
额,请问应该怎么做呢?新手。。。。最近才琢磨这些东西的 - -
#5
对呀,如果登录之后,再输入这个,得到的是这样的
如果没有登录的话,请求个URL,获取的应该是{"Message":"1000000000"}这个吧
#6
求大神,求大神 = =