PHP自定义cUrl函数(http_Curl)

项目应用的时候经常要和底层应用数据交互,php的curl函数使用非常频繁,于是自己写了1个比较适用的cUrl函数;

特点:

1. 默认采用POST方式提交请求,可通过附加参数设置请求类型;

2.可通过附加参数设置请求的数据类型(即header部分的content_type)为json或text,默认为text;

3.可通过附加参数设置请求时是否带session;

样例:标准请求:http_cUrl($url,array[]);

            用get方式请求:http_cUrl($url,array[],['method'=>'GET']);

            用json字符串形式发送请求的数据:http_cUrl($url,array[],['cType'=>'JSON']);

            用带session请求:http_cUrl($url,array[],['withSession'=>1]);

 全参数样例: http_cUrl($url,['userName'=>'testuser','pswd'=>md5('mypswd')],['method'=>'GET','cType'=>'JSON','withSession'=>1]);


/*================================http_cUrl函数====================================

    * @author  Mickeywaugh@qq.com  
    * @copyright Mickeywaugh@qq.com
    * @version [V0.1] ;
    * @date 2017-09-04;
    * @param  [String] $url    [必须] [请求地址];
    * @param  [Array] $data   [可选] [请求的参数];
    * @param  [Array] ...$agrs[可选] [其它参数数组]; $args['method']:请求参数的发送方式,值为POST/GET,默认为POST; $args['cType']:头部Content-Type,值为json 或text,默认为text,$args['withSession']:是否带ssession,1/0,1为带session请求;
                    eg:[0=>'POST',1=>'json',2=>1]
    * @return [Array/text]     [如果服务器返回为json字符串,则将字符串转换为数组,否则返回contect_text];
  
==========================================================================*/
    
function http_cUrl($url,$data=null,...$args){
    $method=$args[0]['method']?:'POST';
    $Content_type=$args[0]['cType']?:'text';
    $withSession=$args[0]['withSession']?1:0;

    $curl = curl_init(); //初始化curl

    if(strtolower($Content_type)=='json'){
        $data=json_encode($data);//将data数组转换为json串来发送
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length:' . strlen($data)) );
    }else{
        $data = is_array( $data ) ? http_build_query( $data ) : $data;
    }
    
    if (strtoupper($method)=='GET') { // 如果 输入方式为GET,则用GET方式发送请求数据
        $url=$url.'?'.$data;  //GET方式将参数放在url后面;
    }else{  //否则用POST方式
        curl_setopt( $curl, CURLOPT_POST, 1 );
        curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );
    }
    
     curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, $method );
    
    if ( $withSession ) {
        session_start();
        $strCookie = "PHPSESSID=" . $_COOKIE[ 'PHPSESSID' ];
        session_write_close();
        curl_setopt( $curl, CURLOPT_COOKIE, $strCookie );
    }
    
    curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $curl, CURLOPT_HEADER, 0 );
    curl_setopt( $curl, CURLOPT_URL, $url );

    $output = curl_exec( $curl ); //获取采集结果
    curl_close( $curl ); //关闭cURL链接
    $json = json_decode( $output, true ); //解析json
    if ( is_null( $json ) ) { //判断json还是xml
        return $output; //如果不是json,则直接返回输出 内容;
    } else {
        return $json;   //如果为json,则返回json;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值