12306 火车票查询接口 API 使用
准备工作
拼装请求url地址,始发地和目的地 是城市站的代码
这个链接 需要在访问的时候带些参数过去才行
https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=(日期)&leftTicketDTO.from_station=(始发地)&leftTicketDTO.to_station=(目的地)&purpose_codes=ADULT
这个是可以直接访问取到数据的
https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=2016-09-01&from_station=SHH&to_station=BJP
12306 城市站点 数据文件件
前台输入始发地和目的地,然后再数据文件中找出站台相对应的代码,拼装到url中,就OK了!
Node.js 中封装成一个插件
// 使用 各种接口
// 引入 http 模块
var https = require('https');
// 简单的HTTP请求的客户端 发送请求
var request = require('request');
// 对时间进行格式化
var moment = require('moment');
// 转换字符编码的纯JavaScript。
var iconv = reuire('iconv-lite');
// 火车票查询,导出该实例
exports.railway = function(req,res){
// 将请求的 body 部分赋值给obj变量,body中包含了前台传递过来的数据
var obj = req.body;
// 请求接口的 参数
var url = '/otn/leftTicket/query?leftTicketDTO.train_date='+req.body.date+'&leftTicketDTO.from_station='+req.body.start+'&leftTicketDTO.to_station='+req.body.end+'&purpose_codes=ADULT';
// 调用请求接口时,相关配置参数
//生成GET请求的参数
var options = {
hostname: 'kyfw.12306.cn',
port: 443,
path: url,
method: 'GET',
rejectUnauthorized: false // 重点 必须把证书验证屏蔽掉
};
// 放送请求,调用接口,返回我们所需的数据
var request = https.request(options,function(response){
// 设置返回数据编码
response.setEncoding('utf8');
var str = '';
// 返回数据 拼接
response.on('data',function(chunk){
str += chunk;
});
// 完成拼装 返回响应数据 进行格式化成json对象
response.on('end',function(){
res.json(JSON.parse(str));
});
// 错误信息 打印在终端
request.on('error',function(err){
console.log('错误信息',err.emssage);
});
// 请求操作 完成后 需要关闭请求资源
requset.end();
});
};