Php 在我使用CURL获取json数据之后,json_decode返回一个空对象

Php 在我使用CURL获取json数据之后,json_decode返回一个空对象,php,json,curl,Php,Json,Curl,$output的VARDUMP string(267)“HTTP/1.1 200 OK Date:Fri,2013年3月1日14:16:57 GMT服务器:Apache/2.4.3(Win32)OpenSSL/1.0.1c PHP/5.4.7 X-Powered-By:PHP/5.4.7缓存控制:无缓存X-debug-token:5130b85a178bd传输编码:分块内容类型:应用程序/json{“名称”:“manoj”}” curl_错误的VARDUMP($ch) 字符串(0)” $json

$output的VARDUMP

string(267)“HTTP/1.1 200 OK Date:Fri,2013年3月1日14:16:57 GMT服务器:Apache/2.4.3(Win32)OpenSSL/1.0.1c PHP/5.4.7 X-Powered-By:PHP/5.4.7缓存控制:无缓存X-debug-token:5130b85a178bd传输编码:分块内容类型:应用程序/json{“名称”:“manoj”}”

curl_错误的VARDUMP($ch)

字符串(0)”

$json_数组的VARDUMP

空的

如果无法解码json,则返回NULL

您不希望返回curl_exec主体中的头,因此需要:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, array('Content-type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$output = curl_exec($ch);
var_dump($output);
$json_array = json_decode($output, true);

var_dump(curl_error($ch));

curl_close($ch);

var_dump($json_array);

如果出于任何原因您必须维护CULLOPT_标题选项,您可以使用以下选项:

curl_setopt($ch, CURLOPT_HEADER, false)
您可以使用CURLOPT_头选项检查返回代码200、404等

$output = curl_exec($ch);  

$json_data = mb_substr($output, curl_getinfo($ch, CURLINFO_HEADER_SIZE));  
$data = json_decode($json_data);

您的输出都是带有标题的内容,尽管它不是有效的JSON。有关于卷曲选项的更多信息,包括
CURLOPT_标题
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);