//PHP里curl对https的证书配置默认是服务器端要求验证的,
//如果服务器端没有配置证书验证,则无法请求https路径。
//如果为了简便使用不需要配置https证书的话,配置curl时将以下两项设置为false即可
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
附上完整的函数:(post提交 简洁版)
private function httpPost($url,$data) {
$ch = curl_init();
//设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch,CURLOPT_POST,1);//使用post提交数据
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);//在发起连接前等待的时间,如果设置为0,则无限等待。
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置 post提交的数据(json格式或者数组 根据实际情况)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//关闭直接输出 在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出。
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
//打印获得的数据
return $output;
}
function httpPost($url, $data = '', $json = null)
{
try {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
if (!empty($data)) {
if ($json && is_array($data)) {
$data = json_encode($data);
}
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
if ($json) { //发送JSON数据
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json; charset=utf-8',
'Content-Length:' . strlen($data))
);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$res = curl_exec($curl);
$errorno = curl_errno($curl);
if ($errorno) {
return array('errorno' => false, 'errmsg' => curl_getinfo($curl));
}
curl_close($curl);
return $res;
} catch (Exception $e) {
print $e->getMessage();
exit();
}
}
PHP CURL请求HTTPS遇到的坑
最新推荐文章于 2022-02-17 10:42:07 发布