繁体   English   中英

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

[英]Custom curl CURLOPT_HTTPHEADER with result [Authentication-API-Key] => 123456

http连接需要带有自定义标头对象Authentication-API-Key的HTTP POST请求

使用CURL时,它会自动转换为[HTTP_AUTHENTICATION_API_KEY] => 12345无法确定原因

从php类提取的简单代码进行测试是

请帮帮我,如何使用[Authentication-API-Key] => 123456获得$ _SERVER结果

<?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
    ...
)

如果运行您的代码, $header2收到消息$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数组,现在我明白了你的意思了。 它像在接收端那样结束的事实并不意味着您没有正确设置标头,因此您正在使用的服务应按预期接收它。

_SERVER就是这样工作的; 它不能完全给您HTTP标头键。

这样做不是CURL。 检查实际的 HTTP请求,您将看到标题很好。

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

这里没有问题。

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

也许通过将其放入数组中,可以防止它在处破裂成数组:

我是cURL的新手,所以我什至还无法测试该理论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM