zoukankan      html  css  js  c++  java
  • PHP使用CURL详解

    cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。

    PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、HTTP PUT、 FTP 上传(也能通过 PHP 的 FTP 扩展完成)、HTTP 基于表单的上传、代理、cookies、用户名+密码的认证。

    我们可以使用cURL通过我们的服务器去获取其他服务器的数据,比如气象局服务器的天气预报数据、比特币交易所的交易记录数据等。

    在PHP中使用cURL,需要开启curl扩展:

    1. 在php.ini里面开启curl这个扩展
    2. 将PHP的安装路径保存到环境变量的系统变量中(环境变量之间的分隔符是英文的分号)
    3. 重启apache服务器
    4. 重启计算机

    实现curl的基本步骤:

    1. 初始化  curl_init();
    2. 设置相关变量  curl_setopt()
    3. 执行并获取结果  curl_exec()
    4. 释放对象  curl_close()

    封装的cURL方法一:

    //curl采集器
    public function http_curl($url,$type='get',$res='json',$arr=''){
    //1.初始化curl
    $ch=curl_init();
    //2.设置curl的参数
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
      if($type=='post'){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
      }
    //3.采集
    $output=curl_exec($ch);
    //4.关闭
    curl_close($ch);
    //如果返回的值,是json格式,则转换成数组
    if($res=='json'){
      if(curl_errno($ch)){
        //请求失败,返回错误信息
        return curl_error($ch);
      }else{
        //请求成功
      return json_decode($output,true);
    }
    }
    }//http_curl end

    封装的cURL方法二:

    function getContent($url, $method, $body='')
    {
        $ch = curl_init();
        //post提交方式
        if ($method == 'POST') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        } else {
            $url .= '?' . $body;
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 5);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            "x-sdk-client" => "php/2.0.0",
        ));
        if ( substr($url, 0, 5) == 'https' ) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        }
        $rtn = curl_exec($ch);
        if ($rtn === false) {
            // 大多由设置等原因引起,一般无法保障后续逻辑正常执行,
            // 所以这里触发的是E_USER_ERROR,会终止脚本执行,无法被try...catch捕获,需要用户排查环境、网络等故障
            trigger_error("[CURL_" . curl_errno($ch) . "]: " . curl_error($ch), E_USER_ERROR);
        }
        curl_close($ch);
        return $rtn;
    }
    慢慢来才是最快的
  • 相关阅读:
    Internet protocol optimizer
    SQl常用语句总结(持续更新……)
    让 步( 写的太好了!)
    让 步( 写的太好了!)
    让 步( 写的太好了!)
    $.ajax()参数详解及标准写法
    $.ajax()参数详解及标准写法
    $.ajax()参数详解及标准写法
    JQuery函数attr()和prop()的区别
    公司来了个傻员工,改变了所有聪明的员工
  • 原文地址:https://www.cnblogs.com/jongty/p/11647826.html
Copyright © 2011-2022 走看看