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

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

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

于 2012-10-25T14:44:51.630 回答
0

就是这样_SERVER工作的;它不会逐字地为您提供 HTTP 标头键。

这不是 CURL 做的。检查实际的HTTP 请求,您会发现标头没有问题。

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

这里没有问题。

于 2014-08-02T15:07:42.103 回答
-5

我正在使用的脚本传递一个数组,如 array("Content-type: image/png")。

也许通过将它放在一个数组中,您可以防止它在以下位置进入数组:

我是 cURL 的新手,所以我什至还不能测试这个理论..

于 2013-02-16T03:18:58.900 回答