查看12306火车票查询API:https://www.juhe.cn/docs/api/id/22
1,将聚合数据SDK(JuheApis.framework)添加到你的程序中来,SDK依赖的包包括:
2,在聚合SDK Framework的JHSDKAPIPath.h文件中找到快递查询接口宏,以及字典参数
/* 12306火车票查询订票 */
/**
@brief 12306火车票查询订票--1、车次查询
@brief lname string 必填 车次名称,如:G4
@param ldtype string 非必填 返回数据的格式,xml或json,默认json
*/
#define kJHAPIS_LIFE_TRAIN_S @"juhe.apis.train.s" //1、车次查询
/**
@brief 12306火车票查询订票--2、站到站查询
@param start string 必填 出发站
@param end string 必填 终点站
@param traintype string 非必填 列车类型,G-高速动车 K-快速 T-空调特快 D-动车组 Z-直达特快 Q-其他
@param dtype string 非必填 返回数据的格式,xml或json,默认json
*/
#define kJHAPIS_LIFE_TRAIN_S2S @"juhe.apis.train.s2s" //2、站到站查询
/**
@brief 12306火车票查询订票--3、12306实时余票查询
@param dtype string 非必填 返回数据的格式,xml或json,默认json
@param from string 必填 出发站,如:上海虹桥
@param to string 必填 到达站,如:温州南
@param date string 非必填 出发日期,默认今日
@param tt string 非必填 车次类型,默认全部,如:G(高铁)、D(动车)、T(特快)、Z(直达)、K(快速)、Q(其他)
*/
#define kJHAPIS_LIFE_TRAIN_YP @"juhe.apis.train.yp" //3、12306实时余票查询
/**
@brief 12306火车票查询订票--4、12306订票①:查询车次
@param from string 必填 出发站名称:如上海虹桥
@param to string 必填 到达站名称:如温州南
@param date date 非必填 默认当天,格式:2014-07-11
@param tt string 非必填 车次类型,默认全部,如:G(高铁)、D(动车)、T(特快)、Z(直达)、K(快速)、Q(其他)
*/
#define kJHAPIS_LIFE_TRAIN_TICKET_CC @"juhe.apis.train.ticket.cc" //4、12306订票①:查询车次
/**
@brief 12306火车票查询订票--5、12306订票②:提交订单
@param name string 必填 乘客姓名
@param seat string 必填 座位类型:商务座:9,一等座:M,二等座:O,特等座:P,高级软卧:6,软卧:4,硬卧:3,软座:2,硬座:1,无座:0
@param mobile string 必填 乘客手机号码
@param idcard string 必填 乘客身份证号码
@param username string 必填 12306官网账号
@param password string 必填 12306官网密码
@param train_no string 必填 步骤①对应车次返回值
@param station_train_code string 必填 步骤①对应车次返回值
@param from_station_telecode string 必填 步骤①对应车次返回值
@param to_station_telecode string 必填 步骤①对应车次返回值
@param from_station_name string 必填 步骤①对应车次返回值
@param to_station_name string 必填 步骤①对应车次返回值
@param secretStr string 必填 步骤①对应车次返回值
*/
#define kJHAPIS_LIFE_TRAIN_TICKET_ORDER @"juhe.apis.train.ticket.order" //5、12306订票②:提交订单
3,快递查询接口在程序中调用方法(将ViewController.m改为.mm)
#import "ViewController.h"
#import <JuheApis/JuheAPI.h>#import <JuheApis/JHOpenidSupplier.h>
#import <JuheApis/JHSDKAPIPath.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[[JHOpenidSupplier shareSupplier] registerJuheAPIByOpenId:@"申请到的OpenId“];
UIButton* beginBtn=[UIButton buttonWithType:UIButtonTypeSystem];
beginBtn.frame=CGRectMake(20, 111, 280, 40);
[beginBtn setTitle:@"开始" forState:UIControlStateNormal];
[beginBtn setTitleColor:[UIColor darkGrayColor] forState:UIControlStateNormal];
[beginBtn addTarget:self action:@selector(doTestAction) forControlEvents:UIControlEventTouchUpInside];
[beginBtn setBackgroundImage:[UIImage imageNamed:@"button5"] forState:UIControlStateNormal];
[self.view addSubview:beginBtn];
}
- (void)doTestAction
{
/* 1、车次查询 */
[self test : kJHAPIS_LIFE_TRAIN_S parameters:@{@"name":@"G4" , @"dtype":@"json" }];
/* 2、站到站查询 */
[self test : kJHAPIS_LIFE_TRAIN_S2S parameters:@{@"start":@"上海虹桥" , @"end":@"苏州园区" }];
/* 3、12306实时余票查询 */
[self test : kJHAPIS_LIFE_TRAIN_YP parameters:@{@"from":@"上海虹桥" , @"to":@"温州南" }];
/* 4、12306订票①:查询车次 */
[self test : kJHAPIS_LIFE_TRAIN_TICKET_CC parameters:@{@"from":@"上海虹桥" , @"to":@"温州南" }];
/* 5、12306订票②:提交订单 */
[self test : kJHAPIS_LIFE_TRAIN_TICKET_ORDER parameters:@{@"name":@"乘客姓名" , @"seat":@"O" , @"mobile":@"乘客手机号码" , @"idcard":@"乘客身份证号码" , @"username":@"12306官网账号" ,@"password":@"12306官网密码" , @"train_no":@"步骤①对应车次返回值" , @"station_train_code":@"步骤①对应车次返回值" , @"from_station_telecod":@"步骤①对应车次返回值" } ] ;
}
- (void)test:(NSString *)path parameters:(NSDictionary *)parameters{
JuheAPI *juheapi = [JuheAPI shareJuheApi];
[juheapi executeWorkWithAPI:path
parameters:parameters
success:^(id responseObject){
if ([[parameters objectForKey:@"dtype"] isEqualToString:@"xml"]) {
NSLog(@"***xml*** \n %@", responseObject);
}else{
int error_code = [[responseObject objectForKey:@"error_code"] intValue];
if (!error_code) {
NSLog(@" %@", responseObject);
}else{
NSLog(@" %@", responseObject);
}
}
} failure:^(NSError *error) {
NSLog(@"error: %@",error.description);
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
4,12306火车票查询订票接口返回数据说明以及错误码说明
1、车次查询
API : kJHAPIS_LIFE_TRAIN_S
返回字段:
名称 |
| 类型 | 说明 |
resultcode |
| int | 返回码 |
reason |
| string | 返回说明 |
result |
| dictionary | 返回结果集 |
| train_info | dictionary | 返回结果集 |
| name | string | 列次名称 |
| start | string | 起点站 |
| end | string | 终点站 |
| starttime | string | 发车时间 |
| endtime | string | 到达时间 |
| mileage | string | 里程 |
station_list |
| array | 站点列表 |
| train_id | int | 站点序号 |
| station_name | string | 站点名称 |
| arrived_time | string | 到达时间 |
| leave_time | string | 发车时间 |
| stay | string | 停留 |
| mileage | string | 里程 |
| ssoftSeat | string | 二等座 |
| hardSead | string | 一等座 |
| softSeat | string | 硬座 |
| hardSleep | string | 软座 |
| softSleep | string | 硬卧 |
error_code |
| int | 错误码 |
2、站到站查询
API : kJHAPIS_LIFE_TRAIN_S2S
返回字段 :
名称 |
|
| 类型 | 说明 |
resultcode |
|
| int | 返回码 |
reason |
|
| string | 返回说明 |
result |
|
| dictionary |
|
| data |
| array | 返回结果集 |
|
| trainOpp | string | 列次名称 |
|
| train_typename | string | 列车类型 |
|
| start_staion | string | 出发站 |
|
| end_station | string | 终点站 |
|
| leave_time | string | 发车时间 |
|
| arrived_time | string | 到达时间 |
|
| mileage | string | 里程 |
| totalcount |
| int | 总条数 |
error_code |
|
| int | 错误码 |
3、12306实时余票查询
API : kJHAPIS_LIFE_TRAIN_YP
返回字段 :
名称 |
| 类型 | 说明 |
error_code |
| int | 返回码 |
reason |
| string | 返回说明 |
result |
| array | 返回结果集 |
| train_no | string | 车次 |
| start_station_name | string | 车次始发站
|
| end_station_name | string | 车次终点站 |
| from_station_name | string | 出发站 |
| to_station_name | string | 到达站 |
| start_time | string | 出发时间 |
| arrive_time | string | 到达时间 |
| train_class_name | string | 车次类型 |
| day_difference | string | 历时天数 |
| lishi | string | 总历时时间 |
| gr_num | string | 高级软卧:-- 说明无该席位 |
| qt_num | string | 其他 |
| rw_num | string | 软卧 |
| rz_num | string | 软座 |
| tz_num | string | 特等座 |
| wz_num | string | 无座 |
| yw_num | string | 硬卧 |
| yz_num | string | 硬座 |
| ze_num | string | 二等座 |
| zy_num | string | 一等座 |
| swz_num | string | 商务座 |
4、12306订票①:查询车次
API : kJHAPIS_LIFE_TRAIN_TICKET_CC
返回字段:
名称 |
|
| 类型 | 说明 |
reason |
|
| string | 返回说明 |
result |
|
| array | 返回结果集 |
| queryLeftNewDTO |
| dictionary |
|
| | train_no | string | 车次 |
| | station_train_code |
| |
| | start_station_telecode |
| |
| | start_station_name | string | 车次始发站 |
| | nd_station_telecode |
| |
| | end_station_name | string | 车次终点站 |
| | from_station_telecode |
| |
| | from_station_name | string | 出发站 |
| | to_station_telecode |
| |
| | to_station_name | string | 到达站 |
| | start_time | string | 出发时间 |
| | arrive_time | string | 到达时间 |
| | day_difference |
| 历时天数 |
| | train_class_name | string | 车次类型 |
| | lishi | string | 总历时时间 |
| | canWebBuy |
| |
| | lishiValue |
| |
| | yp_info |
| |
| | control_train_day |
| |
| | start_train_date |
| |
| | seat_feature |
| |
| | yp_ex |
| |
| | train_seat_feature |
| |
| | seat_types |
| |
| | location_code |
| |
| | from_station_no |
| |
| | to_station_no |
| |
| | control_day |
| |
| | sale_time |
| |
| | is_support_card |
| |
| | gr_num | string | 高级软卧:-- 说明无该席位 |
| | qt_num | string | 其他 |
| | rw_num | string | 软卧 |
| | rz_num | string | 软座 |
| | tz_num | string | 特等座 |
| | wz_num | string | 无座 |
| | yw_num | string | 硬卧 |
| | yz_num | string | 硬座 |
| | ze_num | string | 二等座 |
| | zy_num | string | 一等座 |
| | swz_num | string | 商务座 |
| secretStr | |
| |
| buttonTextInfo | |
| 预订 |
error_code | | | int | 错误码 |
5、12306订票②:提交订单
API : kJHAPIS_LIFE_TRAIN_TICKET_ORDER
名称 | 类型 | 说明 |
reason | int | 返回说明 |
result | dictionary | 返回结果 |
error_code | int | 错误码 |
6. 12306 火车票查询订票错误码
| 错误码 | 说明 |
| 202201 | 车次不能为空 |
| 202202 | 查询不到车次的相关信息 |
| 202203 | 出发站或终点站不能为空 |
| 202204 | 查询不到结果 |
| 202205 | 错误的出发站名称 |
| 202206 | 错误的到达站名称 |
| 202207 | 查询不到余票相关数据哦 |
| 202208 | 错误的请求,请确认传递的参数正确 |
| 202209 | 请求12306网络错误,请重试 |
| 202210 | 12306账号密码错误 |
| 202211 | 邮箱不存在 |
| 202212 | 查询出错 |
| 202213 | 提交订单超时,请重试 |
| 202214 | 出票失败 |
| 202215 | 排队失败 |
| 202216 | 该车次无法预定 |
| 202217 | 不合法的座位类型 |