繁体   English   中英

在PHP 5中使用cURL发布JSON数据

[英]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.

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