自定义卷曲CURLOPT_HTTPHEADER,结果为[Authentication-API-Key] => 123456

时间:2012-10-25 14:37:52

标签: php curl

http连接需要带有自定义标头对象Authentication-API-Key

的HTTP POST请求

使用CURL,它会自动转换为[HTTP_AUTHENTICATION_API_KEY] => 12345 无法弄清楚为什么

用于测试的php类的简单摘录是

请帮助我,如何使用[Authentication-API-Key] =>获取$ _SERVER结果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)
?>

输出:

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

3 个答案:

答案 0 :(得分: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

所以这似乎没问题。你的输出是多少?请注意,目前请求是使用GET发送的,而不是POST。

编辑:我创建了简单地转储/test/returnurl.php数组的脚本$_SERVER,现在我明白了你的意思。事实上,它最终会像接收端一样,并不意味着您没有正确设置标头,因此您正在使用的服务应该按预期接收它。

答案 1 :(得分:0)

_SERVER的工作原理;它不会逐字提供HTTP标头密钥。

这不是CURL。检查实际的 HTTP请求,您会看到您的标题正常。

另一个示例是$_SERVER['CONTENT_TYPE'],它为您提供Content-Type HTTP标头的值。

这里没有问题。

答案 2 :(得分:-5)

我正在使用的脚本传递一个类似数组的数组(“Content-type:image / png”)。

也许通过将它放在一个数组中,可以防止它在:

中分成一个数组

我是cURL的新手,所以我还没有能够测试这个理论..