gpt4 book ai didi

PHP7 cURL 和 SOAP 请求 SSL 失败

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:39 25 4
gpt4 key购买 nike

我在装有 ubuntu 16.04 的 vagrant VM 中使用 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: Parsing WSDL: Couldn't load from 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl' : failed to load external entity "https:
//ws.ocasa.com/testecommerce/service.asmx?wsdl"

使用 php curl 我最终得到这个错误:

Unknown SSL protocol error in connection to ws.ocasa.com:443

我无法毫无问题地从 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.net使用 php curl。

此外,没有可用的“http”版本来解决整个 SSL 问题。

有什么想法吗?我可能缺少一些依赖性?已安装 openssl。

感谢您的宝贵时间。

最佳答案

好吧,我找到了一个解决方案...

使用 curl(CURLOPT_SSLVERSION 有所不同)

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wsdl);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); // $xml is the envelope (string)
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_0);

即使使用 SOAP_SSL_METHOD_TLS 选项,我也无法使 SoapClient 工作。我会将其标记为已解决,但如果有人找到如何使其与 SoapClient 一起工作,那将是真正的答案。

This帮助我提出请求(不是 ssl 部分)

关于PHP7 cURL 和 SOAP 请求 SSL 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49139719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com