2016-12-28 320 views
0

我有一段PHP代码来蜷缩一个API端点,它返回一个json字符串。 但是这个字符串被截断为16042个字符长,所以我的json_decode函数由于格式无效的json字符串而失败。是否有PHP curl返回值的字符串长度限制?

我的问题是“是否有卷曲的返回值有限制吗?”

$ch = curl_init(); 
    $timeout = 5; 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    curl_setopt ($ch, CURLOPT_HEADER, true);  
    $output = curl_exec ($ch); 
    $header_size = curl_getinfo ($ch, CURLINFO_HEADER_SIZE); 
    $body = substr ($output, $header_size); 

或者是SUBSTR函数砍它关掉?

+1

'$ body = substr($ output,$ header_size);'为什么这行? –

+0

@MASIDDIQUI返回消息包含头部“HTTP/1.1 200 OK服务器:openresty/1.9.3.1日期:2016-12-12 06:07:14 GMT内容类型:application/json内容长度:802244连接:保留-alive Cache-Control:no-cache Pragma:no-cache Expires:-1 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET Access-Control-Allow-Origin:* Access-Control-Allow -Credentials:true“只需要身体 – Frank

+1

不要那样做..检查'$ output'是否有效json –

回答

0
$ch = curl_init(); 
$timeout = 60; 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$output = curl_exec ($ch); 
echo $output; 

Exaplanation

CURLOPT_HEADER的包括在输出标头。需要将其设置为false或将其删除。点击here以供参考。

+1

尽管此代码可能会解决问题,但应该始终添加说明代码的功能以及解决问题的原因。 – BDL