也不是什么大不了的代码,以前用file_get_content,感受总体上感觉效率不太好,我记得以前也发过类似的文章,搞忘了,现在重新记录一下。
使用cURL库发送HTTP请求,并设置了一些选项:
- CURLOPT_URL: 设置请求的URL。
- CURLOPT_TIMEOUT: 设置请求的超时时间,单位为秒。
- CURLOPT_RETURNTRANSFER: 将返回的结果以字符串的形式返回,而不是直接输出。
函数接受两个参数:
- $durl: 请求的URL。
- $cache: 缓存时间,以秒为单位,默认为0,表示不缓存。(暂未完善,因为使用了静态网页)
函数通过cURL发送请求,并将返回的结果以字符串的形式保存在变量$r中。然后使用curl_close()关闭cURL会话,并使用json_decode()将返回的JSON格式数据解码为关联数组。最后返回该数组。
PHP代码
public function get_api($durl,$cache = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $durl);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
curl_close($ch);
return json_decode($r,true);
}
升级优化
function get_api($durl, $cache = 0)
{
// 初始化cURL会话
$ch = curl_init();
// 设置cURL选项
curl_setopt($ch, CURLOPT_URL, $durl); // 设置请求的URL
curl_setopt($ch, CURLOPT_TIMEOUT, 5); // 设置超时时间为5秒
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 将结果通过变量返回,而不是直接输出
// 获取Referer的主机部分
$referer_host = parse_url($durl, PHP_URL_SCHEME) . '://' . parse_url($durl, PHP_URL_HOST);
curl_setopt($ch, CURLOPT_REFERER, $referer_host); // 设置Referer头,指定来源主机部分
// 模拟浏览器访问的相关选项
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.9999.999 Safari/537.36'); // 设置User-Agent头,模拟浏览器
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json; charset=utf-8'
));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
// 执行请求并获取响应结果
$r = curl_exec($ch);
// 关闭cURL会话
curl_close($ch);
// 解析JSON格式的响应结果,并返回解析后的数组
return json_decode($r, true);
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容