2

A http connection requires a HTTP POST request with a custom header object Authentication-API-Key

With CURL it's automatically converted to [HTTP_AUTHENTICATION_API_KEY] => 12345 Cannot figure out why

A simplle extract from a php class for testing is

Please help me out, how to get a $_SERVER result with [Authentication-API-Key] => 123456

<?php
    $contentType = 'text/xml';
    $method = 'POST';
    $auth = '';
    $header1 = 'Authentication-API-Key: 12345';
    $charset= 'ISO-8859-1';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/test/returnurl.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array('Content-type: ' . 
                $contentType . '; charset=' . $charset,
                $header1));
curl_exec($ch);

?>

<?php
//http://localhost/test/returnurl.php
Print_r($_SERVER,true)
?>

output:

Array
(
    [HTTP_HOST] => localhost
    [HTTP_ACCEPT] => */*
    [CONTENT_TYPE] => text/xml; charset=ISO-8859-1
    [HTTP_AUTHENTICATION_API_KEY] => 12345
    ...
)
4

3 に答える 3

1

コードを実行すると、$header2未定義のメッセージが表示されるので、修正する必要があると思います。を削除する$header2と、次のようになります。

GET /test/returnurl.php HTTP/1.1
Host: localhost
Accept: */*
Content-type: text/xml; charset=ISO-8859-1
Authentication-API-Key: 12345

だからそれは大丈夫のようです。あなたの出力は何ですか?現在、リクエストはPOSTではなくGETを使用して送信されていることに注意してください。

/test/returnurl.php編集:配列を単純にダンプするスクリプトを作成しました$_SERVER。これで、意味がわかります。受信側でそのようになってしまうということは、ヘッダーが正しく設定されていないという意味ではないので、使用しているサービスは意図したとおりに受信しているはずです。

于 2012-10-25T14:44:51.630 に答える
0

それが_SERVER仕組みです。HTTP ヘッダー キーを逐語的に提供するわけではありません。

これを行うのは CURL ではありません。実際のHTTP リクエストを調べると、ヘッダーに問題がないことがわかります。

もう 1 つの例は$_SERVER['CONTENT_TYPE']Content-TypeHTTP ヘッダーの値を提供する です。

ここでは問題ありません。

于 2014-08-02T15:07:42.103 に答える
-5

私が使用しているスクリプトは、array("Content-type: image/png") のような配列を渡します。

おそらく、それを配列に入れることで、次の場所で配列に分割されるのを防ぎます:

私はcURLを初めて使用するので、この理論をまだテストすることさえできていません..

于 2013-02-16T03:18:58.900 に答える