在cURL结果上使用json_decode

时间:2018-06-10 12:26:09

标签: php curl openssl

我有以下代码来检索有关公司的数据。

function getSSLPage($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSLVERSION,1); 
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'TLSv1');
        $result = curl_exec($ch);
        $result = json_decode($result, true);
        curl_close($ch);
        return $result;
    }


$get_page = getSSLPage('link');
print_r($get_page);

问题是我无法检索json结果。 curl_exec()确实打印了结果,但如果我在$ result上使用print_r()或var_dump(),我得到int(1)作为结果。

我尝试了不同的变化,但一切都失败了。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

使用CURLOPT_RETURNTRANSFER选项。

答案 1 :(得分:1)

您应该使用CURLOPT_RETURNTRANSFER并将代码简化为:

function getSSLPage($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    // add other options you need, eg: timeout, etc

    $result = curl_exec($ch);
    if($result === false) {
        //error occurs, use curl_errno/curl_error to get the error
    } else {
        $result = json_decode($result, true);
    }
    curl_close($ch);
    return $result;
}

答案 2 :(得分:0)

你的职能

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

之后添加以下代码
// Will return the response, if false it prints the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);