CURL怎么获取HTTPS协议的状态码
程序员文章站
2022-06-12 18:55:25
...
CURL如何获取HTTPS协议的状态码
$curl = curl_init(); $url='https://'; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl,CURLOPT_NOBODY,true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); echo curl_getinfo($curl,CURLINFO_HTTP_CODE); curl_close($curl);
我用这种方法打印出http的状态码没问题,但是换成https协议一直输出0. 请问https应该怎么获取
------解决思路----------------------
https 请求時要加上
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
<?php /** curl 获取 https 请求 * @param String $url 请求的url * @param Array $data 要發送的數據 * @param Array $header 请求时发送的header * @param int $timeout 超时时间,默认30s */ function curl_https($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $response = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($error=curl_error($ch)){ die($error); } curl_close($ch); return array($code,$response); } // 调用 $url = 'https://example.com/message.php'; $data = array('name'=>'fdipzone'); $header = array(); list($code, $response) = curl_https($url, $data, $header, 5); echo $code; echo $response; ?>