我需要使用常規的URL編碼查詢字符串對EC2查詢API執行簡單的GET請求。該協議是HTTPS。我將如何在PHP的cURL的幫助下發送請求。PHP的cURL:如何通過HTTPS連接?
回答
通過curl向HTTPS URL發送請求並不是那麼難,就PHP代碼而言。
像這樣的東西應該做的非常精細(我只是嘗試這個代碼部分我的機器上,Windows中,PHP 5.3):
$url = 'https://.../...';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
echo $data;
而且它的結果罰款輸出:我得到同樣的事情在我的瀏覽器中嘗試訪問https://
網址;當然,除了CSS之外。
你可能想看看curl_setopt
功能的手冊頁:有很多的選項,其中一些可能是有用的,在特定情況下:-)
這裏,我用CURLOPT_SSL_VERIFYPEER
和CURLOPT_SSL_VERIFYHOST
;不確定你是否需要亞馬遜,但我不得不使用它們,否則這部分代碼不起作用 - 但這可能與我正在使用的證書是自簽名的事實有關。嘗試使用和不使用這些,你會很快發現你是否需要它們。
實施例:
$url = "https://example.com";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
CURLOPT_SSL_VERIFYPEER
檢查對方的證書是有效還是無效/過期。
CURLOPT_SSL_VERIFYHOST從php manual引述:
1來檢查一個共同 名存在的對等體的SSL證書中。 2到 檢查是否存在通用名稱 ,並驗證它是否與所提供的 主機名匹配。
您能否描述爲什麼需要SSL_VERIFYPEER和SSL_VERIFYHOST? – 2010-02-21 14:50:28
我編輯了我的答案。 – rogeriopvl 2010-02-21 14:57:41
如果要配置CURL以盲目接受證書,可以將CURLOPT_SSL_VERIFYPEER選項設置爲false。
$url = 'https://www.example.com/abc';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Blindly accept the certificate
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
您也可以使用Zend Framework和cURL適配器來幫助完成此任務。詳情here
- 1. cURL https連接
- 2. 通過HTTPS的RavenDB連接
- 3. 如何通過PHP中的cURL獲取FTP最大連接數?
- 4. 如何使用ftp連接通過PHP cURL上傳文件?
- 5. 通過https連接到MySQL
- 6. 通過HTTPS連接到Prosody
- 7. Facebook通過https連接
- 8. 解決連接通過https
- 9. 通過PHP和Curl通過EWS連接到Microsoft Exchange 2007
- 10. 如何通過TOR通過Polipo連接到https網站與Scrapy?
- 11. 通過https保護遠程MySQL連接通過https
- 12. 通過HTTPS連接的cookie傳遞
- 13. Atlassian的竹連接到SVN通過HTTPS
- 14. java的肥皂通過HTTPS連接
- 15. CURL - 通過TLS連接顯式FTP
- 16. 通過cURL連接到Nike + RestAPI
- 17. 無法通過cURL連接到PayPal API
- 18. 如何通過PHP連接到Sybase
- 19. 連接的Xcode通過PHP
- 20. 通過https傳遞連接使用pauseOnConnect
- 21. 無法通過HTTPS連接到Windows ServiceBus
- 22. 通過https連接到網站
- 23. 試圖通過終端連接到https
- 24. 通過純HTTPS連接服務Juggernaut 2
- 25. 通過PHP cURL連接服務發送數據不工作
- 26. 通過PHP cURL驗證login.microsoftonline.com(SSL連接錯誤)
- 27. 通過HTTP或HTTPS連接到MySQL數據庫的Java連接
- 28. PHP Curl登錄https
- 29. 如何使用curl和php通過代理連接到遠程服務器?
- 30. 通過ftp連接通過PHP curl刪除文件回顯目錄內容
url http:// ...? – Sarfraz 2010-02-21 14:47:12
@Sarfraz> ergh,該死的複製粘貼*(我從我的瀏覽器中複製粘貼了一個URL,但沒有注意到它沒有像我以前的服務器那樣添加's')* ;;我已經編輯了我的答案以糾正錯誤;感謝您的評論:-) – 2010-02-21 14:54:25
歡迎您:) – Sarfraz 2010-02-21 14:55:41