Skip to content

PHP中的CURL请求

TIP

cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。

代码示例

php
/**
  * 【接口请求,支持https提交 可用于各类api请求】
  * @param string $url : 提交的地址
  * @param array $data :  POST数组(post请求需要传数组参数)
  * @param string $method : POST/GET,默认GET方式(参数直接拼接在$url上)
  * @return mixed
  */
 function httpRequest($url, $data='', $method='GET'){ 
     $curl = curl_init(); // 启动一个CURL会话
     curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
     curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
     curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
     if($method=='POST'){
         curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
         if ($data != ''){
             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); // 获取的信息以文件流的形式返回
     $data = curl_exec($curl); // 执行操作
     curl_close($curl); // 关闭CURL会话
     return json_decode($data,true); // 返回数据
}

上次更新于: