文档章节

获取12306余票信息

p
 pm-road
发布于 2014/12/17 14:55
字数 463
阅读 73
收藏 1

本文属于原创文章 ,转载注明出处: http://www.pm-road.com/index.php/2014/09/04/92/

不多说,直接上代码:

请求URL:

https://kyfw.12306.cn/otn/leftTicket/queryT?

或者:

https://kyfw.12306.cn/otn/leftTicket/query?

 

以下是主要代码:

import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.Date;

import org.apache.http.client.ClientProtocolException;
import org.junit.Test;

/**
* 火车站查询接口
*
* @ClassName: TrainQueryAPIImpl
* @Description:
* @author LYSY
* @date 2014-8-22 上午11:14:53
*
*/
public class TrainQueryAPIImpl implements ITrainQueryAPI {

@Override
public String getHost() {

String host = Util.KONG;
try{

//此代码是从配置文件中获取12306的请求地址:该地址为上面的请求url
host = Util.loadProperties().getString(“trainhost”);
}catch (Exception e) {
Logs.error(“获取火车票接口主机失败”);
}
return host;
}

@Override
public String getTrainInfo(String city) {
return null;
}
/*
* 与12306相接 查询相应的票数
* @see com.otitan.tgs.api.ITrainQueryAPI#fromStationToStation(java.lang.String, java.lang.String, java.lang.String)
*/
@Override
public String fromStationToStation(String start, String end, String time) {
// https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2014-08-23&leftTicketDTO.from_station=BJP&//leftTicketDTO.to_station=SHH&purpose_codes=ADULT

//这里是要拼出12306所需要的参数信息  ,参数start 和end 是出发地点和终点,

//具体对应值参照:http://www.pm-road.com/index.php/2014/09/01/86/
StringBuffer url = new StringBuffer();
url.append(getHost()).append(“leftTicketDTO.train_date=”)
.append(time)
.append(“&leftTicketDTO.from_station=”)
.append(start)
.append(“&leftTicketDTO.to_station=”)
.append(end)
.append(“&purpose_codes=ADULT”);
try {

//这里使用了一个工具类,该工具类参照:http://www.pm-road.com/index.php/2014/08/22/78/
InputStream is = WebServiceUtil.httpsget(url.toString());

//该方法是将stream 转换成字符串,这里不贴代码,
String info = WebServiceUtil.streamToStr(is,”UTF-8″);
is.close();
Logs.info(“火车票请求成功”);
return info;
} catch (ClientProtocolException e) {
Logs.error(“12306连接不上”);
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

Logs.error(“12306请求失败”);
return null;
}
/*
* 默认没有时间
* @see com.otitan.tgs.api.ITrainQueryAPI#fromStationToStation(java.lang.String, java.lang.String)
*/
@Override
public String fromStationToStation(String start, String end) {

Date now = new Date();

//这里是一个工具类,将时间转成yyyy-MM-dd格式的字符串
String date = Util.dateToStr(now, Util.YEARMONTHDAY);
return fromStationToStation(start, end,date);
}
//这里一个测试方法
@Test
public void test(){
System.out.println(fromStationToStation(“BJP”,”SHH”,”2014-09-01″));
}

}

在程序中调用 :fromStationToStation这个方法即可,对返回的字符串进行json 解析即可。。。。。

 

 

12306余票

12306余票

本文转载自:http://rqlipeng.iteye.com/blog/2150124

p
粉丝 6
博文 69
码字总数 638
作品 0
海淀
私信 提问
不刷验证码!12306混合云架构详解

我们该如何应对“有计划、难预测、暂时性”的巨大访问量?是花巨资建设系统呢? 还是将“短暂”时间内需要巨大资源的业务托管在云计算数据中心,让它们提供快速灵活可调度的资源呢?本文以1...

刘云程
2016/01/22
0
0
关于”12306 外包给阿里巴巴做是否可行“的问题的想法

今天快下班的时候,在 知呼 网看到“12306 外包给阿里巴巴做是否可行“的问题,下班在公司班车上想到把12306网站最常用的用例(客户查询余票信息),拆分成3个系统来完成,各系统可以集群部署的...

马特
2014/01/08
0
0
技术揭秘12306改造(一):尖峰日PV值297亿下可每秒出票1032张

注:本文首发于CSDN,转载请标明出处。 【编者按】12306网站曾被认为是“全球最忙碌的网站”,在应对高并发访问处理方面,曾备受网民诟病。 2015年铁路客票春运购票高峰期已过,并且12306网站...

看看这天
2015/04/03
0
1
“12306余票查询“在64位win8上,jet.oledb.4.0”问题

@eatapple 你好,想跟你请教个问题:“12306余票查询“在64位win8上,总遇到未在本地计算机上注册“jet.oledb.4.0”提供程序这个问题,改为release总是有命名空间缺失。 如: 错误 4 未能找到...

liguobao
2013/11/18
523
2
还在为过年买不到票发愁5款小程序为你助力春运

还在为过年买不到票发愁?5款小程序为你助力春运! 济南微信小程序开发|济南微信小程序开发公司|餐饮小程序|商城小程序|小程序价格|酒店小程序|济南微信小程序开发团队|济南微信小程序开发公...

湃点科技
2018/01/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NIO基于长度域的报文在Netty下的解码

1, 先复习一下粘包/拆包 1.1, 粘包/拆包的含义 TCP是个“流”协议, 并不了解上层业务数据的具体含义, 它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP...

老菜鸟0217
今天
8
0
从零开始搭建spring-cloud(2) ----ribbon

在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式,一种是ribbon+restTemplate,另一种是feign。 其实我们已经在上...

Vincent-Duan
今天
17
0
get和post的区别?

doGet:路径传参。效率高,安全性差(get的传送数据量有限制,不能大于2Kb) doPOST:实体传参。效率低,安全性好 建议: 1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Pos...

花无谢
昨天
4
0
当谈论迭代器时,我谈些什么?

当谈论迭代器时,我谈些什么? 花下猫语:之前说过,我对于编程语言跟其它学科的融合非常感兴趣,但我还说漏了一点,就是我对于 Python 跟其它编程语言的对比学习,也很感兴趣。所以,我一直...

豌豆花下猫
昨天
14
0
10天学Python直接做项目,我做了这5件事

初学者如何尽快上手python? 市面上关于如何学python的资料很多,但是讲的都太复杂。 我就是很简单的几句话,从小白到开发工程师,我只做了五件事。 我觉得任何商业计划书如果不能用几句话讲...

Python派森
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部