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 ... )
答案 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的新手,所以我还没有能够测试这个理论..