过去很多做聚合接口的。时间长了就不能用了。现在还有几个聚合接口。只是要收费。
有时我们只需要简单的查一下。所以还是123xx接口好一点。
- 找到车次查询界面。
2. chome浏览器。按F12进入调试状态。如图切换到network标签页。
3. 点查询按钮,取接口:
地址是:域名/otn/leftTicket/query?leftTicketDTO.train_date=2023-04-01&leftTicketDTO.from_station=WEI&leftTicketDTO.to_station=EAY&purpose_codes=ADULT
在data里面就是返回结果。
- 车次界面没有直接显示单价。单击车次后面的下拉时,才显示价格。抓取接口:
接口地址为:域名/otn/leftTicket/queryTicketPrice?train_no=76000D190208&from_station_no=01&to_station_no=11&seat_types=9MO&train_date=2023-04-01
后记:编程如何实现呢。请看下面的:
首先,如果直接用file_get_contents(url)会得到网站的报错。
用chome的f12调试看了。网页中读取是送入了cookie的。然后把cookie拷贝到postman中进行调试。发现它的cookie主要是一种形式主义。只要有”RAIL_DEVICEID=”即可。值没有都无所谓的。当然我们说它这个cookie可能是在其他重要场合时进行校验的。不能说人家写的没水平。只是otn/leftTicket/query这个接口没有进行校验而已。
代码如下: array( ‘method’=>”GET”, ‘header’=>”Accept-language: en\r\n” . “Cookie: RAIL_DEVICEID=;\r\n” ) ); $context = stream_context_create($opts); $url=’域名/otn/leftTicket/query?leftTicketDTO.train_date=2023-04-08&leftTicketDTO.from_station=WEI&leftTicketDTO.to_station=EAY&purpose_codes=ADULT’; $html= file_get_contents($url,false,$context); echo$html; ?>
执行如下:
其他事项:接口get参数中的站点使用的是电报码。每个车站唯一。但是如果送入站名貌似也是可以的。只是那个中文是很多相似的。要以电报码为准。所以你可以做一个资源表,用拼音首字母先让用户录入和选择具体的准确站点的电报码。再查询。这样才可以的。
最终效果预览,再优化优化就可用了。
最后给一张完成的成品图:(上图input带小框不好看。)
这个成品图。包括吧电报码换成了中文站名,显示起点中终点站,并且用蓝色表名,它是始发站,也是我上车的站,或是我到达站也是终点站。这样心里有个数。另外颜色隔行显示这样好看一些。另外。在单击某个坐席时,用价格接口把它的票价也取出来方便录入订单的参考票价。这些加上手续费算下来是预付金额,至于购票成功后给出实际出票金额,也是结算金额。