2016-12-28 77 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