【发布时间】:2023-03-17 12:10:02
【问题描述】:
我在带有 ubuntu 16.04 的流浪虚拟机中使用 PHP 7.0.25
我需要向这个 SOAP API 发出请求: https://ws.ocasa.com/testecommerce/service.asmx?wsdl
php curl 和 SoapClient 都失败了
使用 SoapClient 我正在这样做(也尝试过没有任何选项,只有 cache_wsdl 部分):
$options = array(
'cache_wsdl' => 0,
'trace' => 1,
'stream_context' => stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
))
);
$wsdl = 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl';
$client = new \SoapClient( $wsdl, $options);
给我这个错误:
[SoapFault]
SOAP-ERROR:解析 WSDL:无法从 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl' : 失败 加载外部实体“https:
//ws.ocasa.com/testecommerce/service.asmx?wsdl"
使用 php curl 我最终收到此错误:
连接到 ws.ocasa.com:443 的未知 SSL 协议错误
我无法从 linux curl 命令行毫无问题地获取页面(当然是从 VM 内部)
curl -I https://ws.ocasa.com/testecommerce/service.asmx?wsdl -v
SSL 连接使用 TLS1.0 / RSA_3DES_EDE_CBC_SHA1
我测试了添加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
还尝试添加 CA 证书:(还尝试在 php.ini 中添加它们)
curl_setopt($ch, CURLOPT_CAINFO, '/vagrant/cacert.pem');
非常奇怪的是,我可以毫无问题地 curl 其他一些 https 站点,例如 secure.php.netusgin php curl。
此外,没有“http”版本可以解决整个 SSL 问题。
有什么想法吗?我可能缺少一些依赖项? openssl 已安装。
感谢您的宝贵时间。
【问题讨论】:
标签: php web-services ssl curl soap