3
$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);

$output 的 VARDUMP

string(267) "HTTP/1.1 200 OK 日期: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 {"name":"manoj"}"

curl_error($ch) 的 VARDUMP

字符串(0)“”

$json_array 的 VARDUMP

空值

4

2 回答 2

10

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

您不想在 curl_exec 的正文中返回标头,因此您需要:

curl_setopt($ch, CURLOPT_HEADER, false)

http://php.net/manual/en/function.json-decode.php

于 2013-03-01T14:24:08.347 回答
2

如果出于任何原因您必须维护 CURLOPT_HEADER 选项,您可以使用以下内容:

$output = curl_exec($ch);  

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

您可以使用 CURLOPT_HEADER 选项检查返回码 200、404 等...

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
于 2014-06-06T18:07:34.160 回答