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 Date: Fri, 01 Mar 2013 14:16:57 GMT Server: Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 X-Powered-By: PHP /5.4.7 cache-control: no-cache x-debug-token: 5130b85a178bd Transfer-Encoding: チャンク Content-Type: application/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 に答える