仿12306查询火车票功能
2016-04-11 18:52
330 查看
首先感谢http://***/share/1861712958622720.html对我的帮助,我在此基础上修改了页面的显示,
先上效果吧
![](http://img.blog.csdn.net/20160411184825407?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160411184834110?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160411184846876?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20160412102224284?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
这里请求的是12306官网的,这里的请求可能会有token会话,有其他问题的,欢迎留言,主要是练习下。
网站代码:https://github.com/xiangzhihong/12306
需要源码的加群哦:278792776
先上效果吧
public class SearchTrainController implements X509TrustManager { private static String QUERY_RUL = "https://kyfw.12306.cn/otn/lcxxcx/query"; @RequestMapping(value = "searchTrain", method = RequestMethod.POST) public @ResponseBody String searchTrain(HttpServletRequest request/**, HttpServletResponse response, PrintWriter pw*/) { StringBuffer sb = new StringBuffer(); String from_Station = request.getParameter("fromStationText"); String to_station = request.getParameter("toStationText"); String queryDate = request.getParameter("train_start_date"); String purpose_codes = request.getParameter("purpose_codes"); try { TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); SSLSocketFactory ssf = sslContext.getSocketFactory(); String param = "?purpose_codes=" + purpose_codes + "&queryDate=" + queryDate + "&from_station=" + from_Station + "&to_station=" + to_station; System.out.println("URL:"+QUERY_RUL + param); URL url = new URL(QUERY_RUL + param); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); con.setSSLSocketFactory(ssf); InputStreamReader in = new InputStreamReader(con.getInputStream(), "utf-8"); BufferedReader bfreader = new BufferedReader(in); String line = ""; while ((line = bfreader.readLine()) != null) { sb.append(line); } //System.out.println(sb.toString()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return sb.toString(); } @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { // TODO Auto-generated method stub } @Override public X509Certificate[] getAcceptedIssuers() { // TODO Auto-generated method stub return null; } }接下来是我本地写的一个测试类
public class JunitTest { public static void main(String[] args) throws Exception { TrustManager[] tm = { new MyX509TrustManager() }; SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE"); sslContext.init(null, tm, new java.security.SecureRandom()); SSLSocketFactory ssf = sslContext.getSocketFactory(); String urlStr = "https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-06-06&from_station=BXP&to_station=WHN"; URL url = new URL(urlStr); HttpsURLConnection con = (HttpsURLConnection) url.openConnection(); con.setSSLSocketFactory(ssf); InputStreamReader in = new InputStreamReader(con.getInputStream(), "utf-8"); BufferedReader bfreader = new BufferedReader(in); StringBuffer sb = new StringBuffer(); String line = ""; while ((line = bfreader.readLine()) != null) { sb.append(line); } System.out.println(sb.toString()); } }
这里请求的是12306官网的,这里的请求可能会有token会话,有其他问题的,欢迎留言,主要是练习下。
网站代码:https://github.com/xiangzhihong/12306
需要源码的加群哦:278792776
相关文章推荐
- 面试题:对1、2、2、3、4、5六个数字进行排列组合
- Spinner的简单功能和用法(下拉选项框)
- 仿12306查询火车票功能
- 2012 Vigenère密码
- C++ string 中 reverse()、assign()、split()
- [LeetCode]Odd Even Linked List
- IFTTT的数据架构
- classloader1
- HDU 3032.Nim or not Nim?【SG函数打表找规律】【4月11】
- 基于h264的SDP相关字段解析
- Spring配置数据源的三种方式 (dbcp,c3p0,jndi).
- [C#] [C# in Depth] Implementing the Singleton Pattern in C#
- 程序员遇到Bug时的30个反应
- centos6.5安装配置cobbler
- 关于位操作学习的一些记录
- 字符串操作函数的实现方法(代码)
- 最大乘积
- Android 属性动画(Property Animation) 完全解析 (下)
- WebKit内核学习之三
- 多线程系列:TheadLocal