您好,欢迎访问一九零五行业门户网

php curl怎么使用post方法

php curl使用post的方法:首先启动一个curl会话;然后对认证证书来源进行检查;接着从证书中检查ssl加密算法是否存在;最后以post方式请求https协议接口即可。
本文操作环境: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视频教程》
以上就是php curl怎么使用post方法的详细内容。
其它类似信息

推荐信息