[置顶] 获取12306余票信息

1 篇文章 0 订阅
1 篇文章 0 订阅

本文属于原创文章 ,转载注明出处: 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余票

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值