【PHP開發】用curl向https發請求時的35號錯誤


放了個假發現以前寫的程序的模擬登陸不管用了,中間輸出,發現curl向https發請求時沒有返回數據,輸出錯誤信息,得到:

curl_errno($ch) -----> 35
curl_error($ch) -----> error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)

查了很多資料,終於發現要強行指定SSL的版本,即加上下面的話就可以了:

curl_setopt($ch, CURLOPT_SSLVERSION, 3);

整個函數也貼下來供參考:

function sendPostHttps($url, $postData, $header=0, $referer=""){
    $ch = curl_init () ;

    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url) ;
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
    curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    $result = curl_exec($ch);
    curl_close($ch);

    return $result;
}

參考帖子:http://stackoverflow.com/questions/20988782/curl-unknown-ssl-protocol-error-in-connection-error-in-server-but-works-on-lo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM