php的curl怎么设置header中参数,cookie中的参数?

$GLOBALS['config']= array(
    'ak'=>'8xxxxxxxx3822212fexxxx',
    'sk'=>'caxxxxxxx6d16c1exxxxxx'
);
$host = 'http://api.yi-xxy.com';


$cookie = 'yiplay_session='.'b415dbc8201551b99cae61d3778254544bf10bc0';  //实际上这个cookie 是sessionid

function request_api_post($url,$params=''){
    global $host;
    global $cookie;
    $request_url=  $host.$url;  //注意$url 不要加斜杠


    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$request_url);


    if($params){
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params));  //注意有的服务器给数组也能接收post参数,有的必须要http_build_query,感觉这些服务web服务版本很低很老


    }
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);


    //签名header


    if(!empty($params)){
        sort($params,SORT_STRING);
        $post = implode('',$params);
    }else{
        $post = '';
    }



    $headers=array(
        'sign:'.md5($GLOBALS['config']['sk'].$post)
    );


    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);
    curl_setopt($ch,CURLOPT_TIMEOUT,5);
    curl_setopt($ch, CURLOPT_COOKIE,$cookie);


    parse_url($url);


    $txt = curl_exec($ch);
    var_dump($txt);
echo '<hr/>++++++++++++++';


    $errno = curl_errno($ch);
    $error = curl_error($ch);
    $info = curl_getinfo($ch);
    var_dump($errno);
    var_dump($error);
    var_dump($info);
    echo  '----------';


    $json = json_decode($txt,true);


    if(!$json){


        exit('接口返回格式错误');


    }


    if(curl_errno($ch)){


        exit(curl_error($ch));


    }

}

GET请求方式


 

function request_api_get($url,$params=''){
    global $host;
    global $cookie;
    $request_url=  $host.$url;
    //$request_url='z.sale.com'.$url;  //注意不要加斜杠


    $ch = curl_init();

    if(!empty($params)){
        $request_url .= '?'.http_build_query($params);
    }
    curl_setopt($ch,CURLOPT_URL,$request_url);


    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);


    //签名header
    if(!empty($params)){
        sort($params,SORT_STRING);
         $post = implode('',$params);
    }else{
        $post = '';
    }


    $headers=array(
        'sign:'.md5($GLOBALS['config']['sk'].$post)
    );



    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);
    curl_setopt($ch,CURLOPT_TIMEOUT,3);
    curl_setopt($ch, CURLOPT_COOKIE,$cookie);

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);


    parse_url($url);


    $txt = curl_exec($ch);
    echo $txt;


    $json = json_decode($txt,true);


    if(!$json){


        exit('接口返回格式错误');


    }


    if(curl_errno($ch)){


        exit(curl_error($ch));


    }




}

POST 上传文件 + 普通参数 提交如下:(注意上传logo , logo不参与签名) 

function request_api_post($url,$params=''){
    global $host;
    global $cookie;
    $request_url=  $host.$url;
    //$request_url='z.sale.com'.$url;  //注意不要加斜杠

    $sort_par = $params;

    $ch = curl_init();

//    $filename = './head.jpg';
//    $minetype = 'image/jpeg';
//    $curl_file = curl_file_create($filename,$minetype);

    $file = dirname(__FILE__).'/head.png';
    $res_img = new CurlFile($file);
    var_dump($res_img);


    curl_setopt($ch,CURLOPT_URL,$request_url);

    $post ="";
    if($params){
        $params['logo'] = $res_img;
        curl_setopt($ch,CURLOPT_POST,true);
     //   curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($params));
        curl_setopt($ch,CURLOPT_POSTFIELDS,$params);

    }
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);

    //签名header
    if(!empty($sort_par)){
        sort($sort_par,SORT_STRING);
        $post = implode('',$sort_par);
    }



    $headers=array(
        'sign:'.md5($GLOBALS['config']['sk'].$post)
    );



    curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,1);
    curl_setopt($ch,CURLOPT_TIMEOUT,3);
    curl_setopt($ch, CURLOPT_COOKIE,$cookie);

    parse_url($url);

    $txt = curl_exec($ch);
    echo 'RES:';
    var_dump($txt);
    echo '<hr/>';

    $errno = curl_errno($ch);
    $error = curl_error($ch);
    //$info = curl_getinfo($ch);
    var_dump($errno);
    var_dump($error);
    //var_dump($info);
    echo  '----------';

    $json = json_decode($txt,true);

    if(!$json){

        exit('接口返回格式错误');

    }

    if(curl_errno($ch)){

        exit(curl_error($ch));

    }


}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值