我正在尝试使用cURL发布一些JSON数据,但是我在设置标题时遇到了问题。
我目前的代码如下:
$ch = curl_init('https://secure.example.com');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
]);
if (!$result = curl_exec($ch))
{
echo 'Failed: ' . curl_error($ch);
curl_close($ch);
die;
}
curl_close($ch);
使用localhost(PHP 7)进行测试时,此代码可以正常工作。但是,我们的Web服务器只运行PHP 5,因此不支持CURLOPT_HTTPHEADER
选项。
当我将其保存在我的代码中时,我收到“500内部错误”。
当我拿出它时,我的curl_exec()
没有运行,我收到错误消息“失败:”但没有显示curl_error()
。
有没有办法设置cURL以期望没有此选项的JSON数据?
答案 0 :(得分:1)
替换此
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
]);
使用
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
PHP 5.4+支持[]
的新数组语法,但PHP< 5.4需要array()
PHP 5.4 http://php.net/manual/en/migration54.new-features.php
中添加了短数组语法支持答案 1 :(得分:1)
您遇到的问题与CURLOPT_HTTPHEADER
无关。它已经在PHP中使用了很长时间。
但是PHP 5.4中添加了新的数组语法[]
。
将您的代码更改为:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
它会正常工作。