请求接口1:httpbaiducomchphpid=1&data=xxxxx得到内容 ret_status 0 ret_msg success ret_data end_time 2023-08-31 005500 begin_time 2023-08-31 00
您可以使用以下PHP代码来同时请求多个接口,并生成XML文件:
<?php
// 定义接口URL和日期范围
$apiUrls = [
'http://baidu.com/ch.php?id=1&data=xxxxx',
'http://baidu.com/ch.php?id=2&data=xxxx',
// 添加更多接口URL
];
$startDate = '20230831';
$endDate = '20230902';
// 初始化curl_multi
$multiHandle = curl_multi_init();
$curlHandles = [];
// 循环生成日期与接口ID,并请求接口
for ($date = $startDate; $date <= $endDate; $date = date('Ymd', strtotime($date . '+1 day'))) {
foreach ($apiUrls as $url) {
$apiUrl = $url . '&data=' . $date;
// 创建curl句柄
$curlHandle = curl_init($apiUrl);
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
// 将curl句柄添加到curl_multi中
curl_multi_add_handle($multiHandle, $curlHandle);
$curlHandles[] = $curlHandle;
}
}
// 执行并等待所有请求完成
$running = null;
do {
curl_multi_exec($multiHandle, $running);
} while ($running > 0);
// 依次处理每个请求的响应
$xml = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;
$xml .= '<!DOCTYPE tv SYSTEM "http://xmltv.cvs.sourceforge.net/viewvc/xmltv/xmltv/xmltv.dtd">' . PHP_EOL;
$xml .= '<tv generator-info-name="Sage" generator-info-url="https://github.com/OpenAI/gpt/blob/main/samples/dialogue.py">' . PHP_EOL;
foreach ($curlHandles as $handle) {
// 获取响应内容
$response = curl_multi_getcontent($handle);
$data = json_decode($response, true);
$channelName = $data[0]['ret_data'][0]['bd_name'];
// 添加channel信息到XML
$xml .= '<channel id="' . $channelName . '">' . PHP_EOL;
$xml .= '<display-name lang="zh">' . $channelName . '</display-name>' . PHP_EOL;
$xml .= '</channel>' . PHP_EOL;
// 添加programme信息到XML
foreach ($data[0]['ret_data'] as $programme) {
$xml .= '<programme channel="' . $channelName . '" start="' . str_replace('-', '', $programme['begin_time']) . '00 +0800" stop="' . str_replace('-', '', $programme['end_time']) . '00 +0800">' . PHP_EOL;
$xml .= '<title lang="zh">' . $programme['desc'] . '</title>' . PHP_EOL;
$xml .= '</programme>' . PHP_EOL;
}
}
$xml .= '</tv>';
// 将生成的XML写入文件
file_put_contents('result.xml', $xml);
// 关闭curl句柄和curl_multi句柄
foreach ($curlHandles as $handle) {
curl_multi_remove_handle($multiHandle, $handle);
curl_close($handle);
}
curl_multi_close($multiHandle);
?>
此代码将同时请求多个接口,并将每个接口的响应解析为JSON格式。然后,从响应数据中提取所需的信息,并将其添加到生成的XML字符串中。最后,将生成的XML字符串写入名为result.xml的文件中。
请注意,您需要根据实际情况调整接口URL和日期范围。此外,根据接口返回的数据结构,您可能需要调整代码以正确提取所需的信息
原文地址: http://www.cveoy.top/t/topic/iUym 著作权归作者所有。请勿转载和采集!