站长资讯网
最全最丰富的资讯网站

php curl怎么使用post方法

php curl使用post的方法:首先启动一个CURL会话;然后对认证证书来源进行检查;接着从证书中检查SSL加密算法是否存在;最后以POST方式请求https协议接口即可。

php curl怎么使用post方法

本文操作环境:Windows7系统、PHP7.1版,DELL G3电脑

php curl怎么使用post方法?

PHP:CURL分别以GET、POST方式请求HTTPS/http协议接口api

  • curl以GET方式请求https协议接口

  function curl_get_https($url){         $curl = curl_init(); // 启动一个CURL会话         curl_setopt($curl, CURLOPT_URL, $url);         curl_setopt($curl, CURLOPT_HEADER, 0);         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在         $tmpInfo = curl_exec($curl); //返回api的json对象         //关闭URL请求         curl_close($curl);         return $tmpInfo;    //返回json对象     }
  • curl以POST方式请求https协议接口

    function curl_post_https($url,$data){ // 模拟提交数据函数         $curl = curl_init(); // 启动一个CURL会话         curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址         curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);              // 对认证证书来源的检查         curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);              // 从证书中检查SSL加密算法是否存在         curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转         curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer         curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求         curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包         curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环         curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回         $tmpInfo = curl_exec($curl); // 执行操作         if (curl_errno($curl)) {             echo 'Errno'.curl_error($curl);//捕抓异常         }         curl_close($curl); // 关闭CURL会话         return $tmpInfo; // 返回数据,json格式     }
  • 封装的通用的接口

/** * CURL GET || post请求 * @desc: GET与post都通用 * @author: Sindsun * @email: 2361313833@qq.com * @date: 2019年4月24日上午10:54:31 * @param: $url 请求的地址 *       $isPostRequest 默认true是GET请求,否则是POST请求 *       $data array  请求的参数 *       $certParam  array  ['cert_path']    ['key_path'] * @return: */ function curl_http($url, $isPostRequest=false, $data=[], $header=[], $certParam=[]){ // 模拟提交数据函数     $curlObj = curl_init(); // 启动一个CURL会话     //如果是POST请求     if( $isPostRequest ){         curl_setopt($curlObj, CURLOPT_POST, 1); // 发送一个常规的Post请求         curl_setopt($curlObj, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的数据包     }else{  //get请求检查是否拼接了参数,如果没有,检查$data是否有参数,有参数就进行拼接操作         $getParamStr = '';         if(!empty($data) && is_array($data)){             $tmpArr = [];             foreach ($data as $k=>$v){                 $tmpArr[] = $k . '=' . $v;             }             $getParamStr = implode('&', $tmpArr);         }         //检查链接中是否有参数         $url .= strpos($url, '?') !== false ? '&' . $getParamStr : '?' . $getParamStr;     }     curl_setopt($curlObj, CURLOPT_URL, $url); // 要访问的地址     //检查链接是否https请求     if(strpos($url, 'https') !== false){         //设置证书         if( !empty($certParam) && isset($certParam['cert_path']) && isset($certParam['key_path']) ){             curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查             curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在             //设置证书             //使用证书:cert 与 key 分别属于两个.pem文件             curl_setopt($curlObj, CURLOPT_SSLCERTTYPE,'PEM');             curl_setopt($curlObj, CURLOPT_SSLCERT, $certParam['cert_path']);             curl_setopt($curlObj, CURLOPT_SSLKEYTYPE,'PEM');             curl_setopt($curlObj, CURLOPT_SSLKEY, $certParam['key_path']);         }else{             curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查             curl_setopt($curlObj, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在         }     }     // 模拟用户使用的浏览器     if(isset($_SERVER['HTTP_USER_AGENT'])){         curl_setopt($curlObj, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);     }     curl_setopt($curlObj, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转     curl_setopt($curlObj, CURLOPT_AUTOREFERER, 1); // 自动设置Referer     curl_setopt($curlObj, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环     curl_setopt($curlObj, CURLOPT_HEADER, 0); // 显示返回的Header区域内容     curl_setopt($curlObj, CURLOPT_HTTPHEADER, $header);   //设置头部     curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回     $result = curl_exec($curlObj); // 执行操作     if ( curl_errno($curlObj) ) {         $result = 'error: '.curl_error($curlObj);//捕抓异常     }     curl_close($curlObj); // 关闭CURL会话     return $result; // 返回数据,json格式 }

说明 :前提是打开php的curl开关和服务器的ssl_module,不然不能正常使用哦。

推荐学习:《PHP视频教程》

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号