簡體   English   中英

在cURL結果上使用json_decode

[英]Using json_decode on cURL result

我有以下代碼可檢索有關公司的數據。

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)作為結果。

我嘗試了其他變化,但一切都失敗了。

多謝您的協助。

使用CURLOPT_RETURNTRANSFER選項。

您應該使用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;
}

在你的功能內

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);之后在下面添加代碼curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// Will return the response, if false it prints the response
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM