本文属于原创文章 ,转载注明出处: 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 解析即可。。。。。
相关推荐
2. **数据解析**:12306返回的数据通常是XML或JSON格式,开发者需要解析这些数据以获取余票信息。C#内置了System.Xml和System.Json命名空间,可以方便地解析和操作XML或JSON数据。 3. **用户界面**:为了让用户直观...
6. **定时任务**:为了让用户定时获取最新余票信息,系统可能包含一个定时器组件(如`System.Timers.Timer`),定期执行查询操作。 7. **用户界面设计**:良好的用户界面设计可以使查询过程更直观,比如使用输入框...
1. **网络爬虫技术**:12306余票查询首先需要获取12306网站的实时数据,这通常通过编写网络爬虫来实现。网络爬虫利用HTTP/HTTPS协议与服务器交互,模拟用户登录并发送请求,抓取网页上的余票信息。这需要掌握HTML、...
12306余票查询是中国铁路客户服务中心官方的一个重要功能,主要服务于广大旅客查询火车票的剩余数量,以便规划出行。在这个系统中,用户可以输入出发地、目的地、出发日期等信息,实时获取各个车次的余票情况。12306...
首先,网络通信是整个应用的基础,因为余票信息是通过与12306官网服务器进行交互获取的。在Android中,我们可以使用HttpURLConnection或者OkHttp库来发起HTTP请求。12306网站提供了RESTful API服务,我们需要根据...
在12306余票检测中,我们需使用requests库来访问12306网站,获取HTML页面内容。 3. **BeautifulSoup库**:BeautifulSoup是Python的一个解析HTML和XML文档的库,用于从网页中提取结构化数据。在这里,我们需要用它...
在Python编程中,12306余票查询是一项常见的应用,它可以帮助用户实时获取火车票的剩余情况,为出行规划提供便利。本项目利用Python的`requests`模块,通过12306官方接口进行数据请求,并将结果显示在命令行界面...
这个项目源码是针对安卓平台开发的一个12306车次余票查询应用,它在原有的12306车次查询源码基础上进行了升级,提供了更丰富的功能和优化的用户体验。通过分析这个源码,我们可以深入学习到以下几个关键知识点: 1....
在本项目中,需要理解并使用12306的API,通过发送HTTP请求来获取车次、余票、价格等相关信息。这涉及到网络编程和JSON解析,因为API返回的数据通常是以JSON格式进行传输的。 4. **JSON解析**: JSON(JavaScript ...
7. **数据存储与展示**:获取到火车票信息后,你可能需要将其存储在数据库中以便后续处理,或者直接输出到用户界面。这需要你掌握基本的SQL操作和前端展示技术。 8. **安全与合法性**:在开发过程中,必须遵守12306...
标题“12306购票功能查询余票”涉及到的是一个与铁路售票系统12306相关的程序或应用,其核心功能是实时查询火车票的余票信息。这一功能对于旅客来说非常重要,因为它允许用户在购票前了解是否有票可买,避免了盲目...
本项目是针对12306中国铁路客户服务中心的火车票查询功能进行的开发,旨在为用户提供实时、方便的火车票余票信息查询服务。对于初学者而言,这是一个很好的实践项目,能够帮助他们深入理解和掌握Android应用开发的...
面临的主要技术挑战可能包括:实时数据同步(如余票更新)、高并发处理(尤其是在节假日购票高峰期)、用户体验优化(如加载速度、交互流畅性)以及安全问题(如防止恶意攻击和信息泄露)。 8. **学习资源**: ...
5. **自动抢票机制**:抢票功能是该系统的一大亮点,可能通过定时任务或事件驱动的方式,监控余票变化,并在有票时立即提交订单。这需要高效的任务调度和错误重试策略。 6. **安全性**:系统需要确保用户信息安全,...
1. **数据接口模块**:这是与12306官方网站交互的关键部分,负责获取实时的车次、余票等信息。开发人员需要理解和使用12306的API接口,通过发送HTTP请求并处理返回的数据来实现查询功能。 2. **用户界面模块**:这...
该软件当前实现了自动登录,余票查询,预订车票的功能,暂时不支持支付功能。车票抢占成功后,请在PC机上登录进行付款。 由于该软件避免了和服务器进行大量无关数据交互,仅仅交互关键数据,因此具有耗费流量小(和...
主要介绍了java抓取12306信息实现火车余票查询示例,需要的朋友可以参考下