我正在尝试将sendgrid API保留到我的自定义网站中。请参阅此Remove workitems permanently
现在我试图在我的帐户上获取所有收件人列表我安装了xampp 3.2.1版本并启用了curl我通过phpinfo()
函数检查但是我没有得到任何结果,这个相同的代码是在我的主1and1服务器上正常工作但没有进入xampp localhost
<?php
$url = 'https://api.sendgrid.com/api/newsletter/lists/get.json';
$user = 'x';
$pass = 'y';
$params = array(
'api_user' => $user,
'api_key' => $pass,
);
$request = $url;
$session = curl_init($request);
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $params);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
print_r($response);
?>
答案 0 :(得分:3)
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
在此代码行下方
$session = curl_init($request);
请参阅此链接:
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
答案 1 :(得分:0)
我尝试注册为自己测试,但它不会让我超过验证阶段。对于大多数对https的curl调用,我包含以下内容 - 这可能有所帮助。
$cacert='c:/wwwroot/cacert.pem';
/* You can download cacert.pem from the interwebs easily. Change the path to suit own environment */
if( parse_url( $request,PHP_URL_SCHEME )=='https' ){
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 2 );
curl_setopt( $curl, CURLOPT_CAINFO, realpath( $cacert ) );
}
答案 2 :(得分:0)
在php.ini中设置openssl.cafile和openssl.capath并重启apache
默认情况下,对等验证为真,一旦设置了上述值,验证就会通过。您可以通过将CURLOPT_SSL_VERIFYPEER设置为false
来关闭此验证