SoapClient
都会引发此异常。但是,WSDL 文件可以通过 HTTPS 访问。既可以通过浏览器,也可以通过托管 SOAP 服务器本身的服务器上的 curl
。 Gzip 也不是问题,防火墙也不是问题。软件特定方面(Magento)也已尽可能排除。
尽管文件可用,但 SOAP 应用程序无法加载自己的 WSDL 文件可能是什么原因?有没有什么可以开始的?或者我应该再次开始深入研究 Magento 本身?
对我来说,一个不明确的 HTTP 500 错误被发回,如果它有任何相关性的话。
提前致谢!
我终于让我的 Magento 2 SOAP API 可以与开发 SSL 证书一起使用。 我在 Apache 日志中发现了一个错误,这导致我遇到了主要问题:
未捕获的异常:警告:SoapServer::SoapServer():SSL 操作失败,代码为 1。OpenSSL 错误消息: 错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败
以下是解决所有问题的设置:
我的端点 (SOAP) URL 使用 https。
我的整个 magento 商店都使用 https(不安全和安全都一样)。
我编辑了 apache2 的 php.ini 文件:
原行:openssl.cafile=
新版本:openssl.cafile=/my/path/to/dev.crt
重新启动 apache,清除 Magento 缓存,并且 php 还缓存 WSDL,因此需要运行“sudo rm -rf /tmp/wsd-*”才能看到结果(天哪!)。
如果您记得在进行这些更改后清除 3000 个不同的缓存,您将有望使用未经验证的开发证书成功完成 Magento 的 SOAP 更新。
我最终发现注释掉 openssl.cafile 行、清除 /tmp WSDL 缓存并重新启动 apache 会导致 SOAP 调用崩溃,而重做这一切将使其再次工作。可以肯定地说,这是我遇到的问题。