您的位置:首页 > 理论基础 > 计算机网络

使用HTTP GET请求12306网站接口获取车站名和车站Code

2013-05-31 17:28 453 查看
打开链接http://www.devapi.org/12306-Search-Train-Number.html 拖到此页面的最下端,看附件:

附件

全国火车站代号字典:station_name.js

该字典用js保存,数据结构如下:

?
1
var station_names ='@bjb|北京北|VAP|beijingbei|bjb|0';
其中的大写字母VAP即是车站代号。

附赠一款接口测试工具,可在此工具中模拟HTTP GET/POST。猛戳这里下载

此附件有一个js文件,该文件是全国火车站名的代号,我下面的程序就是获取到该js文件里面的火车站名和它的代号Code。比如上面station_names 中的“北京北”和“VAP”。这个js文件的链接地址是:
http://dynamic.12306.cn/otsweb/js/common/station_name.js
利用HTTP GET请求,GET表示浏览器从服务器取数据的方式,并且在此期间浏览器不向服务器发送任何的数据,所有数据均体现在URL当中。get是从服务器上获取数据。在客户端,Get方式在通过URL提交数据,数据在URL中可以看到。对于get方式,服务器端用Request.QueryString获取变量的值。GET方式提交的数据最多只能有1024字节。安全性问题,使用 Get 的时候,参数会显示在地址栏上,而 Post 不会。所以,如果这些数据是中文数据而且是非敏感数据,那么使用 get。

获取解析数据的示例代码如下:

string formUrl = "http://dynamic.12306.cn/otsweb/js/common/station_name.js";

CookieContainer cookieContainer = new CookieContainer();

HttpWebRequest request = WebRequest.Create(formUrl) as HttpWebRequest;
request.Method = "GET";
request.KeepAlive = false;
request.AllowAutoRedirect = true;
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)";
request.CookieContainer = cookieContainer;
HttpWebResponse SendSMSResponse = (HttpWebResponse)request.GetResponse();
StreamReader SendSMSResponseStream = new StreamReader(SendSMSResponse.GetResponseStream());
string strRespone = SendSMSResponseStream.ReadToEnd();
SendSMSResponse.Close();
SendSMSResponseStream.Close();

Console.WriteLine(strRespone);
Console.Read();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐