zoukankan      html  css  js  c++  java
  • 【PHP】通过header发送自定义数据

    发送header:

    我们定义了三个参数,token、language、region,放入header发送过去

    <?php
    $url = 'http://www.example.com';
    $header = array('token:JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU','language:zh','region:GZ');
    $content = array(
            'name' => 'fdipzone'
    );
    
    $response = tocurl($url, $header, $content);
    $data = json_decode($response, true);
    
    echo 'POST data:';
    echo '<pre>';
    print_r($data['post']);
    echo '</pre>';
    echo 'Header data:';
    echo '<pre>';
    print_r($data['header']);
    echo '</pre>';
    
    /**
     * 发送数据
     * @param String $url     请求的地址
     * @param Array  $header  自定义的header数据
     * @param Array  $content POST的数据
     * @return String
     */
    function tocurl($url, $header, $content){
        $ch = curl_init();
        if(substr($url,0,5)=='https'){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($content));
        $response = curl_exec($ch);
        if($error=curl_error($ch)){
            die($error);
        }
        curl_close($ch);
        return $response;
    }
    ?>

    接收header

    我们可以在$_SERVER中获取header数据,自定义的数据都是使用HTTP_作为前缀的,所以可以把HTTP_前缀的数据读出。

    <?php
    $post_data = $_POST;
    $header = get_all_headers();
    
    $ret = array();
    $ret['post'] = $post_data;
    $ret['header'] = $header;
    
    header('content-type:application/json;charset=utf8');
    echo json_encode($ret, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
    
    /**
     * 获取自定义的header数据
     */
    function get_all_headers(){
    
        // 忽略获取的header数据
        $ignore = array('host','accept','content-length','content-type');
    
        $headers = array();
    
        foreach($_SERVER as $key=>$value){
            if(substr($key, 0, 5)==='HTTP_'){
                $key = substr($key, 5);
                $key = str_replace('_', ' ', $key);
                $key = str_replace(' ', '-', $key);
                $key = strtolower($key);
    
                if(!in_array($key, $ignore)){
                    $headers[$key] = $value;
                }
            }
        }
    
        return $headers;
    
    }
    ?> 

    输出:

    POST data:
    Array
    (
        [name] => fdipzone
    )
    Header data:
    Array
    (
        [token] => JxRaZezavm3HXM3d9pWnYiqqQC1SJbsU
        [language] => zh
        [region] => GZ
    )
  • 相关阅读:
    mysql练习题
    转 -day19--form&modelform
    day20--注册功能及首页
    day19-form表单&auth模块、项目初识
    day15-pymysql模块的使用
    第14天jquery+bootstrap
    第13天-js+jquery
    iTween基础之Punch(摇晃)
    iTween基础之Audio(音量和音调的变化)
    iTween基础之Rotate(旋转角度)
  • 原文地址:https://www.cnblogs.com/richerdyoung/p/7905737.html
Copyright © 2011-2022 走看看