有些时候,服务端接口虽然开启了https,但是域名ssl证书无法正常使用,这个时候客户端就要取消ssl验证了,不然莫名其妙的没有任何响应,http状态码却是0.
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://xxx.com');
//curl_setopt($curl,CURLINFO_HEADER_OUT,true);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'host:xxx.com',
'content-type:application/json',
'authorization:xxx',
]);
//客户请求方法,比如使用PUT时就需要改写,除了POST和GET可以不需要这个设置
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
//POST请求
curl_setopt($curl, CURLOPT_POST, 1);
//传输数据或者文件,
curl_setopt($curl, CURLOPT_POSTFIELDS, xxx);
//返回响应数据
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
//取消ssl验证
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
$response = curl_exec($curl);
$status = curl_getinfo($curl);
if ($status == 0) {
$response= false;
}
curl_close($curl);
return $response;
注意,
CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST都必须设为false