我需要使用常规URL编码的查询字符串对EC2 Query API执行简单的GET请求.协议是HTTPS.如何在PHP的cURL的帮助下发送请求.
rog*_*pvl 17
例:
$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);
Run Code Online (Sandbox Code Playgroud)
CURLOPT_SSL_VERIFYPEER
检查对等证书是否有效或无效/已过期.
来自php手册的CURLOPT_SSL_VERIFYHOST引用:
1检查SSL对等证书中是否存在公用名.2检查是否存在公用名,并验证它是否与提供的主机名匹配.
就 PHP 代码而言,通过curl 向HTTPS URL 发送请求本身并不困难。
像这样的事情应该做得很好(我刚刚在我的机器、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;
Run Code Online (Sandbox Code Playgroud)
它输出的结果很好:与我尝试访问 URL 时在浏览器中得到的结果相同https://;当然,CSS 除外。
您可能想查看该curl_setopt函数的手册页:有很多选项,其中一些在您的具体情况下可能有用:-)
在这里,我使用了CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST; 不确定你是否需要亚马逊的那些,但我必须使用它们,否则这部分代码不起作用——但这可能与我使用的证书是自签名的事实有关......尝试使用和不使用它们,您很快就会知道是否需要它们。