1.聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据.
2.下载聚合数据SDK,将开发包里的juhe_sdk_v_1_1.jar拷贝到libs根目录下,将libJuheSDK_v_1_0.so拷贝到libs\armeabi目录下,如图:
3. 根据接口说明文档找到以下方法:
/** * 获取车次 * * @param name * 车次 * @param jsonCallBack */ public void getTrainNum(String name,JsonCallBack jsonCallBack) /** * 站到站查询 * * @param start * 出发站 * @param end * 终点站 * @param traintype * 列车类型 * @param jsonCallBack */ public void getS2S(String start,String end,String traintype,JsonCallBack jsonCallBack) /** * 12306实时余票查询 * * @param from * 出发站 * @param to * 到达站 * @param date * 出发日期 默认今天 * @param traintype * 车次类型 * @param jsonCallBack */ public void getTicketleft(String from,String to,String date,JsonCallBack jsonCallBack) /** * 12306订票①:查询车次 * * @param from * 出发站 * @param to * 到达站 * @param date * 出发日期 * @param traintype * 车次类型 * @param jsonCallBack */ public void bookTrainNum(String from,JsonCallBack jsonCallBack) /** * * @param name * 乘客姓名 * @param seat * 座位类型:商务座:9,一等座:M,二等座:O,特等座:P,高级软卧:6,软卧:4,硬卧:3,软座:2,硬座:1,无座:0 * @param mobile * 乘客手机号码 * @param idcard * 乘客身份证号码 * @param username * 12306官网账号 * @param password * 12306官网密码 * @param train_no * 步骤①对应车次返回值 * @param station_train_code * 步骤①对应车次返回值 * @param from_station_telecode * 步骤①对应车次返回值 * @param to_station_telecode * 步骤①对应车次返回值 * @param from_station_name * 步骤①对应车次返回值 * @param to_station_name * 步骤①对应车次返回值 * @param secretStr * 步骤①对应车次返回值 * @param jsonCallBack */ public void bookTicket(String name,String seat,String mobile,String idcard,String username,String password,String train_no,String station_train_code,String from_station_telecode,String to_station_telecode,String from_station_name,String to_station_name,String secretStr,JsonCallBack jsonCallBack)
首先,在AnroidManifest.xml中添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.READ_CONTACTS" />
在application标签内部加入你申请的openid
<Meta-data android:name="com.thinkland.juheapi.openid" android:value="申请的openid" />
CommonFun.initialize(getApplicationContext());
导入相关包
import com.thinkland.juheapi.common.CommonFun; import com.thinkland.juheapi.common.JsonCallBack; import com.thinkland.juheapi.data.train.TrainData;
调用方法
//站站查询 TrainData trainData = TrainData.getInstance(); trainData.getS2S("上海虹桥","苏州园区","G",new JsonCallBack() { @Override public void jsonLoaded(JSONObject arg0) { // TODO Auto-generated method stub try { int resultcode = arg0.getInt("resultcode"); if (resultcode == 200) { JSONArray resultJson = arg0.getJSONArray("result"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } });
5.返回字段及相关错误码
public voidgetTrainNum(String name,JsonCallBack jsonCallBack)
返回字段:
类型 |
说明 |
|||
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 |
错误码 |
public void getS2S(String start,String end,String traintype,JsonCallBack jsonCallBack)
返回字段:
类型 |
说明 |
|||
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 |
错误码 |
public void getTicketleft(String from,String to,String date,JsonCallBack jsonCallBack)
返回字段:
类型 |
说明 |
||
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 |
商务座 |
publicvoid bookTrainNum(String from,String traintype,JsonCallBack jsonCallBack)
返回值:
类型 |
说明 |
|||
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 |
错误码 |
public voidbookTicket(String name,String seat,String mobile,
String idcard,String username,String password,String train_no,
String station_train_code,String from_station_telecode,
String to_station_telecode,String from_station_name,
Stringto_station_name,String secretStr,JsonCallBack jsonCallBack)
返回码:
类型 |
说明 |
|
reason |
int |
返回说明 |
result |
dictionary |
返回结果 |
error_code |
int |
错误码 |
错误码 |
说明 |
202201 |
车次不能为空 |
202202 |
查询不到车次的相关信息 |
202203 |
出发站或终点站不能为空 |
202204 |
查询不到结果 |
202205 |
|
202206 |
|
202207 |
查询不到余票相关数据哦 |
202208 |
错误的请求,请确认传递的参数正确 |
202209 |
请求12306网络错误,请重试 |
202210 |
12306账号密码错误 |
202211 |
邮箱不存在 |
202212 |
查询出错 |
202213 |
提交订单超时,请重试 |
202214 |
出票失败 |
202215 |
排队失败 |
202216 |
该车次无法预定 |
202217 |
不合法的座位类型 |