[英]POSTing JSON data with cURL in PHP 5
我正在尝试使用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 Internal Error”。 当我取出它时,我的curl_exec()
无法运行,并且收到错误消息“失败:”,但没有显示curl_error()
。
没有此选项,有没有办法设置cURL以期望JSON数据?
取代这个
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
您遇到的问题与CURLOPT_HTTPHEADER
无关。 它已经在PHP中使用了很长时间了。
但是PHP 5.4中添加了新的数组语法[]
。
将您的代码更改为:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string)
));
它将正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.