基于php的12306火车票查询接口调用代码实例

基于php的12306火车票查询接口调用代码实例

1. 简介

12306是中国铁路总公司的官方网站,为旅客提供火车票购买、查询等服务。然而,使用12306网站查询火车票信息相对繁琐,为了方便开发者调用和获取火车票信息,可以通过基于php的12306火车票查询接口进行快速查询。

2. 使用API调用技术查询火车票信息

2.1 获取火车票查询接口

首先,我们需要获取12306火车票查询接口的地址。可以通过`https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=日期&leftTicketDTO.from_station=出发站编码&leftTicketDTO.to_station=到达站编码&purpose_codes=ADULT`来获取火车票查询结果。

其中,train_date为查询日期,格式为`yyyy-mm-dd`;from_station为出发站编码,to_station为到达站编码,可以通过12306网站或其他查询工具获取;purpose_codes为查询类型,ADULT表示成人票。

2.2 调用API查询火车票信息

为了方便使用和代码维护,我们可以封装一个函数来调用火车票查询接口,并返回查询结果。下面是一个示例的php代码:

function queryTrainTickets($date, $fromStation, $toStation) {

$url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={$date}&leftTicketDTO.from_station={$fromStation}&leftTicketDTO.to_station={$toStation}&purpose_codes=ADULT";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

$date = "2021-01-01";

$fromStation = "BJP";

$toStation = "SHH";

$result = queryTrainTickets($date, $fromStation, $toStation);

echo $result;

以上代码中的`queryTrainTickets`函数接受日期、出发站编码和到达站编码作为参数,通过调用curl库来发送HTTP请求,并返回查询结果。我们可以根据需要对查询结果进行解析和展示。

3. 解析查询结果

12306火车票查询接口返回的结果是一个json格式的字符串,我们需要对其进行解析才能获取到具体的火车票信息。以下是一个示例代码,用于解析查询结果:

$result = json_decode($result, true);

if ($result['status']) {

$data = $result['data'];

foreach ($data['result'] as $ticket) {

$ticket = explode("|", $ticket);

$trainNumber = $ticket[3]; // 火车车次

$startTime = $ticket[8]; // 出发时间

$endTime = $ticket[9]; // 到达时间

$duration = $ticket[10]; // 历时

$price = $ticket[32]; // 票价

// 输出火车票信息

echo "车次: {$trainNumber},出发时间: {$startTime},到达时间: {$endTime},历时: {$duration},票价: {$price}";

}

} else {

echo "查询失败,请重试!";

}

解析查询结果后,我们可以根据需求对结果进行处理和展示。上述代码中,我们提取了火车车次、出发时间、到达时间、历时和票价等信息,并将其输出到浏览器端。

4. 总结

通过上述代码示例,我们可以快速使用php调用12306火车票查询接口,实现火车票的查询功能。需要注意的是,12306火车票查询接口可能会有一定的限制和验证码机制,因此在实际应用中需要做好请求频率的控制和验证码的处理。

在使用接口时,我们还可以通过设置请求头来模拟浏览器访问,例如设置User-Agent等信息,以减少被服务器封禁的可能性。

综上所述,使用基于php的12306火车票查询接口调用代码可以方便快捷地查询火车票信息,对于开发者和用户来说都提供了更好的使用体验。

后端开发标签