我需要使用常规的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. Facebook通过https连接
- 3. 通过PHP和Curl通过EWS连接到Microsoft Exchange 2007
- 4. java的肥皂通过HTTPS连接
- 5. 通过PHP连接MySQL通过PHP
- 6. 无法通过cURL连接到PayPal API
- 7. 无法通过HTTPS连接到Windows ServiceBus
- 8. 通过https传递连接使用pauseOnConnect
- 9. 通过https连接到网站
- 10. 通过HTTP或HTTPS连接到MySQL数据库的Java连接
- 11. 如何使用curl和php通过代理连接到远程服务器?
- 12. 如何通过代理连接使用cURL获取数据
- 13. 如何通过认证连接CURL到Tumblr API
- 14. 通过代理的PHP curl
- 15. 通过https代理发送curl请求
- 16. 通过PHP连接mySQL db
- 17. 通过php连接到mysql
- 18. 如何通过安全连接使用NSURLRequest和NSURLConnection? (HTTPS)
- 19. 如何使用C#通过RPC over HTTPs连接到Exchange Server
- 20. 如何使用Jsoup通过HTTPS进行连接?
- 21. 如何使用WinINet通过代理连接到HTTPS
- 22. 如何使用urllib2通过代理连接到HTTPS(使用Python)
- 23. 如何通过从https源下载到http连接?
- 24. 通过HTTPS从PowerShell远程连接连接Exchange服务器
- 25. 如何通过SSL通过PHP连接到Amazon MySQL RDS实例
- 26. Perl WWW:机械化不通过https连接https
- 27. dyndns.org通过php/curl更新?
- 28. PHP4:通过cURL通过HTTPS/POST发送XML?
- 29. 如何创建https连接?
- 30. PHP cURL不能使用HTTPS
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