当前位置: 代码迷 >> 综合 >> php 请求携带证书
  详细解决方案

php 请求携带证书

热度:2   发布时间:2024-02-22 23:06:46.0
<?php
/***
*curl http请求封装
*
*/
class HttpService{public static function post($url,$data=[],$headers=[],$timeout=10,$cert=false){return self::send($url,$data,$headers,'POST',$timeout,$cert);}public static function get($url,$headers=[],$timeout=10,$cert=false){return self::send($url,[],$headers,'GET',$timeout,$cert);}public static function put($url,$headers=[],$timeout=10,$cert=false){return self::send($url,'',$headers,'PUT',$timeout,$cert);}public static function delete($url,$headers=[],$timeout=10,$cert=false){return self::send($url,'',$headers,'DELETE',$timeout,$cert);}/*** @param $url* @param array $data* @param array $headers ['Accept:application/json']* @param string $method* @param int $timeout* @param bool $cert* @return bool|string*/private static function send($url,$data=[],$headers=[],$method='POST',$timeout=10,$cert=[]){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);if (is_array($data) && !empty($data))$data = http_build_query($data);if(is_string($headers) || is_array($headers))curl_setopt($curl, CURLOPT_HTTPHEADER, ($headers));if($cert){//使用证书:cert 与 key 分别属于两个.pem文件curl_setopt($curl, CURLOPT_SSLCERTTYPE,'PEM');curl_setopt($curl, CURLOPT_SSLCERT, $cert[0]);curl_setopt($curl, CURLOPT_SSLKEYTYPE,'PEM');curl_setopt($curl, CURLOPT_SSLKEY, $cert[1]);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);switch ($method) {case 'POST':curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl, CURLOPT_POST, true);break;case 'DELETE':curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');break;case 'PUT':curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');break;default:break;}curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);$return_str = curl_exec($curl);curl_close($curl);return $return_str;}
}

 

  相关解决方案