phpcurlhttps請求
Ⅰ php用curl時,HTTP鏈接正常,HTTPS時,獲取不到數據
https 需要認證。
簡易方法 (不認證,不安全)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
安全方法(認證,安全):
用firefox查出網站的CA certificate,下戴, 然後
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");
Ⅱ 對於https協議的網站,可以用php 的curl來模擬get請求和post請求嗎,能得到返回值嗎
可以。
CURLOPT_PROTOCOLS
CURLPROTO_* 的位域指。如果被啟用,位域值會限定libcurl在傳輸過程中有哪些可使用的協議。這將允許你在編譯libcurl時支持眾多協議,但是限制只是用它們中被允許使用的一個子集。默認libcurl將會使用全部它支持的協議。參見 CURLOPT_REDIR_PROTOCOLS .
可用的協議選項為:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL
對了,可定能得到返回值
Ⅲ AMH 面板curl 請求https頁面伺服器報404錯誤
那說明WEB目錄在HTTPS配置中沒有具體綁定。或者文件不支持HTTPS調用。
Ⅳ php curl調用http與https有何不同
https要求有證書,通常可以通過
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//SSL報錯時使用
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);//SSL報錯時使用
對證書進行屏蔽。
如果是你自己本身需要驗證證書,那就不能屏蔽這里了。
更多PHPcURL內容請參考我的博客《PHPcURL實現模擬登錄與採集使用方法詳解教程》
Ⅳ PHP使用curl訪問https頁面的問題
你試試 curl_multi_getcontent( resource $ch ) 我記得這個東西是要接受的 忘了是在傳過去的頁面還是本頁面
Ⅵ 如何使用curl獲取https請求
解決方法為在curl請求時,加入:
復制代碼代碼如下:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 從證書中檢查SSL加密演算法是否存在
curl https請求代碼
復制代碼代碼如下:
<?php
/** curl 獲取 https 請求
* @param String $url 請求的url
* @param Array $data 要發送的數據
* @param Array $header 請求時發送的header
* @param int $timeout 超時時間,默認30s
*/
function curl_https($url, $data=array(), $header=array(), $timeout=30){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳過證書檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 從證書中檢查SSL加密演算法是否存在
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
$response = curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return $response;
}
// 調用
$url = 'https://www.example.com/api/message.php';
$data = array('name'=>'fdipzone');
$header = array();
$response = curl_https($url, $data, $header, 5);
echo $response;
?>
希望本文所述對大家的php程序設計有所幫助。
Ⅶ 如何通過php發送https Get請求
我封裝了一個Curl類,你看能不能用的上
classHttp{
publicfunctioncurlRequest($url,$postData='',$timeOut=10,$httpHeader=array()){
$handle=curl_init();
curl_setopt($handle,CURLOPT_URL,$url);
if($httpHeader){
curl_setopt($handle,CURLOPT_HTTPHEADER,$httpHeader);
}
curl_setopt($handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($handle,CURLOPT_HEADER,0);
curl_setopt($handle,CURLOPT_TIMEOUT,$timeOut);
curl_setopt($handle,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($handle,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($handle,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($handle,CURLOPT_USERAGENT,'Mozilla/5.0(Macintosh;IntelMacOSX10_7_2)AppleWebKit/537.36(KHTML,likeGecko)Chrome/27.0.1453.93Safari/537.36');
curl_setopt($handle,CURLOPT_ENCODING,'gzip,deflate,sdch');
if(!empty($postData)){
curl_setopt($handle,CURLOPT_POST,1);
curl_setopt($handle,CURLOPT_POSTFIELDS,$postData);
}
$result['response']=curl_exec($handle);
$result['httpStatus']=curl_getinfo($handle,CURLINFO_HTTP_CODE);
$result['fullInfo']=curl_getinfo($handle);
$result['errorMsg']='';
$result['errorNo']=0;
if(curl_errno($handle)){
$result['errorMsg']=curl_error($handle);
$result['errorNo']=curl_errno($handle);
}
curl_close($handle);
return$result;
}
}
$curl=newHttp();
$strUrl='https://www..com?search=keywords';
$arrResponse=$curl->curlRequest($strUrl);//這就是請求結果
Ⅷ PHP使用CURL請求https的微信統一下單介面時報錯,同樣的代碼我在另一台機器上運行是正常的
我也遇到了同樣的問題,只要是走微信,偶爾都會請求不到,原來是正常的。今天排查了一天,終於找到了原因所在。
centos原生用的NSS,而不是OpenSSL,curl調用NSS庫請求https時偶爾會出現請求不到的情況。
解決方案:
參考網址:網頁鏈接
按步驟完成後記得重啟 php-fpm和nginx
Ⅸ 如何通過php發送https Get請求
<?php
//使用file_get_contents()發送GET請求非常簡單
$url="http://www.caorongan.com";//請求的地址
$response=file_get_contents($url);//發送請求
echo$response;//列印結果
Ⅹ php 用curl獲取https地址
你就算是
注釋1和注釋2都沒有他照樣會有數據輸出
因為 他默認是輸出你獲得到的數據
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//輸出內容為字元串
你要加上上面這一句話
這樣就不會輸出獲取到的數據