php curl发布一个大的json对象

时间:2016-03-20 06:15:18

标签: php json curl

所以,我有一个发送大型JSON对象的php脚本,这是我用来执行此操作的代码。

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_VERBOSE, true);
$json_response = curl_exec($curl);

现在,当数据很小时,请求会顺利进行。但是,当json对象变得庞大时,突然无法发送数据,而是显示" Content-Length:0"在请求标头中,好像它不包含该对象。

我假设数据有多大是有限的。有没有办法绕过那个?

我搜索过类似的问题,并找到了发送文件的解决方案。但我在这里的对象是数据库的结果集,因此我更愿意将文件方法作为最后的手段。

感谢。

1 个答案:

答案 0 :(得分:0)

所以基本上你已经拥有了HTTPHEADER,但是你错过了Content-length,试试这样:

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-length:' . strlen($data)));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_VERBOSE, true);

$json_response = curl_exec($curl);