gpt4 book ai didi

php - PHP SoapClient 是否支持 HTTPS 连接

转载 作者:行者123 更新时间:2023-12-04 21:29:00 25 4
gpt4 key购买 nike

我在 Windows 上使用 XAMPP 并尝试使用 PHP soap 扩展 SoapClient。我正在尝试使用以下代码加载托管在 HTTPS 站点中的 WSDL 文件

<?php
$myClient=new SoapClient("https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl");
?>

我收到以下错误:

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl' : failed to load external entity "https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl" in C:\xampp\htdocs\dev\w3schools\soapClient\index.php:2 Stack trace:
#0 C:\xampp\htdocs\dev\w3schools\soapClient\index.php(2): SoapClient->SoapClient('https://smi.sp....')
#1 {main} thrown in C:\xampp\htdocs\dev\w3schools\soapClient\index.php on line 2



现在我在请求期间进行了网络捕获,发现 HTTPS 通信在 SSL 级别上无法正常工作。 Wireshark 在服务器 key 交换上显示一个数据包,我的工作站响应为:

TLSv1 Record Layer: Alert (Level: Fatal, Description: Certificate Unknown)

Wireshark Screenshot



使用同一台计算机上的 nuSOAP 客户端或 soapUI 实用程序,我能够正常连接到该服务。所以我猜没有证书问题。

所以肯定是 SOAP 扩展和 SSL 通信。任何人都可以帮忙吗?给出提示寻找什么?

最佳答案

要解决此错误,您可以停用 SSL 证书验证。但请记住,这应该只针对测试用例执行,因为这会使您的连接不安全!

您可以在实例化 SoapClient 时传递流上下文像这样:

<?php
$myClient = new SoapClient("https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl", [
'stream_context' => stream_context_create([
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
]),
]);

如果您有一个有效的证书但它是自签名的,则还有另一种解决方案(更安全):
<?php
$myClient = new SoapClient("https://smi.sp.f-secure.com/smi/5.1/services/EchoService?wsdl", [
'stream_context' => stream_context_create([
'ssl' => [
'allow_self_signed' => true,
],
]),
]);

关于php - PHP SoapClient 是否支持 HTTPS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28109505/

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