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

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

 

 

posted on 2013-05-31 17:28  行意  阅读(4451)  评论(0编辑  收藏  举报

导航