通过Curl从URL获取JSON,https返回Null

时间:2013-10-31 11:51:08

标签: php json curl

您好我正在尝试使用此代码使用Curl和PHP从网址获取JSON文件中的数据:

<?php
    //  Initiate curl
    $url = "https://panel.virtualcenter360.es/home/api/getdatasample?dateIni=1376524800&dateEnd=1381795200";
    $ch = curl_init($url);
    // Set the url
    curl_setopt($ch, CURLOPT_URL,$url);
    // Execute
    $result=curl_exec($ch);

    $res = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($result));

    var_dump(json_decode($res, true));

        switch (json_last_error()) {
    case JSON_ERROR_NONE:
        echo ' - No errors';
    break;
    case JSON_ERROR_DEPTH:
        echo ' - Maximum stack depth exceeded';
    break;
    case JSON_ERROR_STATE_MISMATCH:
        echo ' - Underflow or the modes mismatch';
    break;
    case JSON_ERROR_CTRL_CHAR:
        echo ' - Unexpected control character found';
    break;
    case JSON_ERROR_SYNTAX:
        echo ' - Syntax error, malformed JSON';
    break;
    case JSON_ERROR_UTF8:
        echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
    break;
    default:
        echo ' - Unknown error';
    break;
}
    curl_close($ch);
?>

我收到No errors消息,但结果为NULL。您认为这可能是什么问题?

也许我需要从Curl配置一些参数?

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您只需要获取一些json信息,我建议您使用file_get_contents()而不是cURL函数。

答案 1 :(得分:1)

如果你想使用curl,你必须这样做:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  

CURLOPT_SSL_VERIFYPEER
  FALSE阻止cURL验证对等方的证书。可以使用CURLOPT_CAINFO选项指定要验证的备用证书,也可以使用CURLOPT_CAPATH选项指定证书目录。

http://php.net/manual/en/function.curl-setopt.php

答案 2 :(得分:0)

在Codeigniter应用程序/库文件夹

header('Content-Length: ' . strlen($output)); //Comment line no. 267 of REST_Controller.php