请高手帮忙,我写了个采集程序,但提交参数后,页面无法返回需要的内容。
// 要提交表单的URI字符串。
string uriString = "http://www.airprice.com/intltkt/Price_Search.aspx"; ///////////////////////////////////////
// 打开页面
///////////////////////////////////////
WebClient webClient = new WebClient();
byte[] responseData = webClient.DownloadData(uriString);
string srcString = Encoding.UTF8.GetString(responseData); ///////////////////////////////////////
// 填写页面并提交
///////////////////////////////////////
webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); // 获取页面的 VeiwState
string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
int j = srcString.IndexOf("\"", i);
string viewState = srcString.Substring(i, j - i); viewState = System.Web.HttpUtility.UrlEncode(viewState); // 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = "BeginCity=北京&RadioGroup1=TwoWays&ArrayCity=悉尼&BeginDate=2010-04-21&ReturnDate=2010-04-27&AirCompany=所有航空公司&BunkChange=Y&select5=B - 北京&select4=S - 悉尼&BeginDate1=&select3=不限&select2=全部&OrderTicketNo=0&AIRTKT_PROD_INFO_ID=&class=0&TreCode=&__VIEWSTATE=" + viewState; // 将字符串转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
responseData = webClient.UploadData(uriString, "POST", postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
//srcString = Encoding.UTF8.GetString(responseData);
srcString = Encoding.GetEncoding("GB2312").GetString(responseData); return srcString;
// 要提交表单的URI字符串。
string uriString = "http://www.airprice.com/intltkt/Price_Search.aspx"; ///////////////////////////////////////
// 打开页面
///////////////////////////////////////
WebClient webClient = new WebClient();
byte[] responseData = webClient.DownloadData(uriString);
string srcString = Encoding.UTF8.GetString(responseData); ///////////////////////////////////////
// 填写页面并提交
///////////////////////////////////////
webClient = new WebClient();
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); // 获取页面的 VeiwState
string viewStateFlag = "id=\"__VIEWSTATE\" value=\"";
int i = srcString.IndexOf(viewStateFlag) + viewStateFlag.Length;
int j = srcString.IndexOf("\"", i);
string viewState = srcString.Substring(i, j - i); viewState = System.Web.HttpUtility.UrlEncode(viewState); // 要提交的字符串数据。格式形如:user=uesr1&password=123
string postString = "BeginCity=北京&RadioGroup1=TwoWays&ArrayCity=悉尼&BeginDate=2010-04-21&ReturnDate=2010-04-27&AirCompany=所有航空公司&BunkChange=Y&select5=B - 北京&select4=S - 悉尼&BeginDate1=&select3=不限&select2=全部&OrderTicketNo=0&AIRTKT_PROD_INFO_ID=&class=0&TreCode=&__VIEWSTATE=" + viewState; // 将字符串转换成字节数组
byte[] postData = Encoding.ASCII.GetBytes(postString);
// 上传数据,返回页面的字节数组
responseData = webClient.UploadData(uriString, "POST", postData);
// 将返回的将字节数组转换成字符串(HTML);
// ASP.NET 返回的页面一般是Unicode,如果是简体中文应使用
// Encoding.GetEncoding("GB2312").GetString(responseData)
//srcString = Encoding.UTF8.GetString(responseData);
srcString = Encoding.GetEncoding("GB2312").GetString(responseData); return srcString;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货