$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, false);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
$xml = curl_exec($ch);
if(curl_exec($ch) === false)
{ echo curl_error($ch); }
else
{ echo 'Operation completed without any errors'; }
curl_close($ch);
return $xml;
以上代码给出了以下错误。
与api.site.com:443相关的未知SSL协议错误
根据许多人的建议,下面的代码将解决上述问题,但它没有帮助。仍然得到同样的错误。
curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
我也按照建议在下面尝试但仍然得到相同的错误。
curl_setopt ($ch, CURLOPT_SSLVERSION, 'CURL_SSLVERSION_SSLv3' );
请建议我应该在代码中添加什么来修复此错误。
谢谢,
答案 0 :(得分:0)
您刚刚忽略了SSL证书验证,可能会帮助您解决问题,请求使用CURL时使用以下代码。
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
答案 1 :(得分:0)
您可以尝试使用此代码。
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $xml_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_HEADER, false);
$xml = curl_exec($ch);
if($xml === false) {
echo curl_error($ch);
}else{
echo 'Operation completed without any errors';
}
curl_close($ch);
return $xml;
此外,您可以将此课程用于卷曲请求,
https://gist.github.com/sourovroy/1fba93188470bbe3eefa15cd17533b23
答案 2 :(得分:0)
您可以通过curl verbose模式检查网站使用的TLS版本:
curl_setopt($curl, CURLOPT_VERBOSE, true);
输出将如下所示:
...
SSL connection using TLS1.0 / RSA_3DES_EDE_CBC_SHA1
...
然后像这样设置 CURLOPT_SSL_CIPHER_LIST :
curl_setopt($curl, CURLOPT_SSL_CIPHER_LIST, "TLSv1");
其中“ TLSv1”是网站使用的TLS版本。
在curl选项中更改SSL版本和VERIFY_PEER / HOST并不能解决我的问题,但是这种方法可以解决。