【问题标题】:Sending Custom Header with CURL使用 CURL 发送自定义标头
【发布时间】:2012-11-26 02:14:09
【问题描述】:

我想通过如下所示的 API 向 Web 服务发送请求,我必须通过 一个自定义的 http 标头(哈希),我正在使用 CURL,我的代码似乎可以工作,但我没有得到 正确的响应,我被告知它与哈希值有关,尽管该值有 被认为是正确的,我通过它的方式有什么问题吗? 代码本身。

 <?php
    $ttime=time();
    $hash="123"."$ttime"."dfryhmn";
    $hash=hash("sha512","$hash");
    $curl = curl_init();
    curl_setopt($curl,CURLOPT_HTTPHEADER,array('Hash:$hash'));      
    curl_setopt ($curl, CURLOPT_URL, 'http://web-service-api.com/getresult.xml?clientid=456&time=$ttime');  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
    $xml = curl_exec ($curl);  

    if ($xml === false) {
        die('Error fetching data: ' . curl_error($curl));  
    }
    curl_close ($xml);  

    echo htmlspecialchars("$xml", ENT_QUOTES);

    ?>

【问题讨论】:

    标签: php xml api curl header


    【解决方案1】:

    如果您需要在 php 中获取和设置自定义 http 标头,以下简短教程非常有用:

    发送请求标头

    $uri = 'http://localhost/http.php';
    $ch = curl_init($uri);
    curl_setopt_array($ch, array(
        CURLOPT_HTTPHEADER  => array('X-User: admin', 'X-Authorization: 123456'),
        CURLOPT_RETURNTRANSFER  =>true,
        CURLOPT_VERBOSE     => 1
    ));
    $out = curl_exec($ch);
    curl_close($ch);
    // echo response output
    echo $out;
    

    读取自定义标题

    print_r(apache_request_headers());
    

    你应该看到

    Array
    (
        [Host] => localhost
        [Accept] => */*
        [X-User] => admin
        [X-Authorization] => 123456
        [Content-Length] => 9
        [Content-Type] => application/x-www-form-urlencoded
    )
    

    使用 PHP CGI 自定义标头

    在 .htaccess 中

    RewriteEngine On
    RewriteRule .? - [E=User:%{HTTP:X-User}, E=Authorization:%{HTTP:X-Authorization}]
    

    从 $_SERVER 读取自定义标头

    echo $_SERVER['User'];    
    echo $_SERVER['Authorization'];
    

    资源

    【讨论】:

      【解决方案2】:

      'Hash:$hash' 应该是"Hash: $hash"(双引号)或'Hash: '.$hash

      CURLOPT_URL 中传递的 URL 也是如此

      【讨论】:

      • 耶!认为是变量插值一直困扰着我。
      猜你喜欢
      • 2016-05-27
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 2011-12-28
      相关资源
      最近更新 更多