1,将聚合数据SDK(JuheApis.framework)添加到你的程序中来,SDK依赖的包包括:

2,在聚合SDK Framework的JHSDKAPIPath.h文件中找到快递查询接口宏,以及字典参数
/* 12306火车票查询订票 */
/**
?@brief 2306火车票查询订票--1、车次查询
?@param 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 :?juhe.apis.train.s (宏 : 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 :?juhe.apis.train.s2s (宏 : 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 :?juhe.apis.train.yp? (宏 : 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 :?juhe.apis.train.ticket.cc? (宏 : 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 :?juhe.apis.train.ticket.order? (宏 : 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 |
不合法的座位类型 |
5,更多聚合数据SDK接口,访问这里: http://www.juhe.cn/juhesdk/idocs