常见的 CURLE_SSL_CACERT (60)
错误, 解决办法:
从 https://curl.haxx.se/ca/cacert.pem (opens new window)下载最新的
可直接下载2022 年 3 月 22 日
配置 php.ini
文件,搜索 [curl]
,在下方添加
curl.cainfo = "D:\phpStudy\php\php-7.0.12-nts\ext\cacert.pem"
curl post
请求
/**curl中的post请求* @param $url 请求地址* @param $post 请求参数*/
function curl_post($url,$post){$curl = curl_init();//初始化// 设置抓取的urlcurl_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请求 不验证证书和hostscurl_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
请求
/*** @param $url 请求地址* @return mixed|string*/
function curl_get($url)
{// 初始化$curl = curl_init();// 设置请求的urlcurl_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
数据,参数内容中包含中文,返回值不对的情况传递第二个参数
json_encode($post, JSON_UNESCAPED_UNICODE); // 中文不转为unicode ,对应的数字 256
json_encode
另一个常用参数
json_encode($post, JSON_UNESCAPED_SLASHES); // 不转义反斜杠,对应的数字 64
json_encode
只能传递一个常量,如果同时使用两个则: 256 + 64 = 320
json_encode($post, 320); // 中文不转为unicode,不转义反斜杠