打开链接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();