论坛首页 综合技术论坛

获取12306余票信息

浏览 4776 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2014-10-31   最后修改:2014-11-06

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

   发表时间:2014-11-05  
楼主  那个https那里是怎么解决的啊?
0 请登录后投票
   发表时间:2014-11-06  
下载12306的证书文件, 然后导入到你用的jdk里面去就可以了
0 请登录后投票
   发表时间:2014-11-06  
ownraul 写道
下载12306的证书文件, 然后导入到你用的jdk里面去就可以了

原文出处的链接地址可能会报404错误:具体地址为:http://www.pm-road.com/index.php/2014/09/04/92,关于一楼的朋友,不知道你的问题具体是什么?12306证书的问题不用下载,代码里面已经有提示,有一个Util代码里面解决这个问题
0 请登录后投票
   发表时间:2014-11-06  
ranwei09321115 写道
楼主  那个https那里是怎么解决的啊?

原文出处的链接地址可能会报404错误:具体地址为:http://www.pm-road.com/index.php/2014/09/04/92,关于一楼的朋友,不知道你的问题具体是什么?12306证书的问题不用下载,代码里面已经有提示,有一个Util代码里面解决这个问题
0 请登录后投票
   发表时间:2014-11-06  
java小编 写道
ranwei09321115 写道
楼主  那个https那里是怎么解决的啊?

原文出处的链接地址可能会报404错误:具体地址为:http://www.pm-road.com/index.php/2014/09/04/92,关于一楼的朋友,不知道你的问题具体是什么?12306证书的问题不用下载,代码里面已经有提示,有一个Util代码里面解决这个问题

仔细看啦 !那个 连接出来的文章!
解决了!感谢楼主
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics