我需要使用常规的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