我正在尝试通过cURL使用HTTPS服务。
当我在CLI中执行以下命令时,它可以正常工作。
curl --header "Content-Type: text/xml;charset=UTF-8" --header "SOAPAction: createLabel" --data @testRequest.xml https://labelqa.estafeta.com/EstafetaLabel20/services/EstafetaLabelWS?wsdl --cacert labelqa.estafeta.com.pem
但是当我尝试使用相同但在PHP中时,浏览器会返回此错误。
SSL证书问题:无法获得本地颁发者证书
我有以下代码。
$ch = curl_init("https://labelqa.estafeta.com/EstafetaLabel20/services/EstafetaLabelWS?wsdl");
curl_setopt($ch, CURLOPT_POSTFIELDS, "xmlRequest=testRequest.xml");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: text/xml;charset=UTF-8',
'SOAPAction: createLabel',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CAINFO, 'labelqa.estafeta.com.crt');
$response = curl_exec($ch);
if (FALSE === $response)
throw new Exception(curl_error($ch), curl_errno($ch));
curl_close($ch);
print_r($response);
die;
应该使用PHP的SoapClient进行调用,但由于同样的问题它无论如何都不起作用。
您可以从此链接https://labelqa.estafeta.com/EstafetaLabel20/services/EstafetaLabelWS?wsdl下载de labelqa.estafeta.com.crt 证书。