样式帅大哭了,我毕竟不是前端,宗旨就是练练手,体验微信小程序的研发,以最为轻易的方式以获取12306数据查阅火车票。
目录结构:
search1就是启程东站列表,search2就是目的东站列表,命名没太好好想要。
车站信息
12306查阅页面,关上浏览器开发者工具分析命令,辨认出各个车站的信息都在这个JS文件中:
当然车站的信息可以出现变动,所以最出色的方式就是捕捉数据,我现在为了便利,轻易把数据拷贝过来,就是一大堆字符串:
通过正则封盖抽出目前项目须要的两个东西,例如:北京北 VAP
在search1.js和search2.js中各自摆了这个字符串,本想要按照data:{}的方式放到app.js中,可是挑没,这个该如何同时实现?
命令信息
12306查阅页面,页面查阅按钮的时候,它可以传送两个命令:
第一个就是日志命令,这里不须要,它存有什么促进作用12306晓得
第二个才就是我们须要的,拷贝它的命令地址,构筑我们程序的命令
url中最后的queryC,之前就是query的,可能将过段时间变成queryD、query0...
又一个变化的地方,也可以说道时时皆可以变化,毕竟12306不是自己搞的,无法掌控,
所以最出色还是捕捉数据的方式去搞,我现在便利轻易inotify了。
leftTicketDTO.train_date 日期,格式:2016-10-13
leftTicketDTO.from_station 启程东站编码,上面那堆上车站信息中的,北京北为VAP
leftTicketDTO.to_station 目的东站编码,同上
purpose_codes 普通(ADULT)或学生(0X00)
积极响应信息
参数错误或没见全回到的JSON:{"status":false,"c_url":"leftTicket/queryC","c_name":"CLeftTicketUrl"}
通常正常的格式为:
要是递交的就是昨天的日期,则messages中会存有消息,但status和httpstatus仍然为true和200。
于是乎对回到结果存有了如下推论:
展现信息
先看一看data中的存有什么东东:
使用的参数,能证实其促进作用的:
车次 station_train_code
始发站 start_station_name
终点站 end_station_name
启程东站 from_station_name
目的东站 to_station_name
启程时间 start_time
目的时间 arrive_time
历时时间 lishi
商务座 swz_num
一等座 zy_num
二等座 ze_num
软卧 rw_num
硬座 yw_num
软座 rz_num
硬座 yz_num
无座 wz_num
特等座 tz_num
gr_num和qt_num,猜测为高级软卧和其他,gg_num和yb_num就真的想不到了。
须要特别注意的就是,座位的票数少于某个数的返回值就是“存有”,而高于则回到的就是数字,所以在表明数据列表之前还得处置下。
在写下程序的时候我辨认出我存有挺多见解所写出的,可以至真正必须写下博客的时候却找不出必须写下什么了,可悲!日后想起在补足吧。
附上源码:http://pan.baidu.com/s/1hrKWRac
或者轻易浏览:TrainTicket.rar