常见的 CURLE_SSL_CACERT (60)
错误, 解决办法:
从 https://curl.haxx.se/ca/cacert.pem (opens new window)下载最新的
可直接下载2022 年 3 月 22 日
配置 php.ini
文件,搜索 [curl]
,在下方添加
bash
curl.cainfo = "D:\phpStudy\php\php-7.0.12-nts\ext\cacert.pem"
curl post
请求
php
/**curl中的post请求
* @param $url 请求地址
* @param $post 请求参数
*/
function curl_post($url,$post){
$curl = curl_init();//初始化
// 设置抓取的url
curl_setopt($curl, CURLOPT_URL, $url);
// 设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, false);
// 设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
// 设置post方式提交
curl_setopt($curl, CURLOPT_POST, true);
// POST请求参数
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
// https请求 不验证证书和hosts
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
// 添加头部信息
curl_setopt($curl, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Accept: application/json",
]);
// 执行命令
$data = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
curl_close($curl); //关闭URL请求
return $data;
}
curl get
请求
php
/**
* @param $url 请求地址
* @return mixed|string
*/
function curl_get($url)
{
// 初始化
$curl = curl_init();
// 设置请求的url
curl_setopt($curl, CURLOPT_URL, $url);
// 设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, false);
// 设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 执行命令
$data = curl_exec($curl);
if (curl_errno($curl)) {
return curl_error($curl);
}
curl_close($curl); //关闭URL请求
return $data;
}
有时候使用json_encode
传递json
数据,参数内容中包含中文,返回值不对的情况传递第二个参数
php
json_encode($post, JSON_UNESCAPED_UNICODE); // 中文不转为unicode ,对应的数字 256
json_encode
另一个常用参数
php
json_encode($post, JSON_UNESCAPED_SLASHES); // 不转义反斜杠,对应的数字 64
json_encode
只能传递一个常量,如果同时使用两个则: 256 + 64 = 320
php
json_encode($post, 320); // 中文不转为unicode,不转义反斜杠