12

以下に示すように、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);

    ?>
4

2 に答える 2

15

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'];

資力

于 2014-10-25T07:27:32.083 に答える
13

'Hash:$hash'"Hash: $hash"(二重引用符)または'Hash: '.$hash

渡されたURLについても同じことが言えますCURLOPT_URL

于 2012-12-07T21:04:35.000 に答える