Parsing WSDL:Couldn’t load from “xxxxxxx” 解决方案
(一)、问题来源
用 php 的 soapclient 连接第三方的 webservice,是 https 的,连接报错 SOAP-ERROR: Parsing WSDL:Couldn’t load from “xxxxxxx”
(二)、解决方法
(1)、首先排查 php 的 soap扩展 、openssl扩展
(2)、排除第三方对本服务器的IP限制
(3)、最后怀疑是 https 需要ssl验证,而本机没有 pem 文件
可以通过如下设置,忽略ssl验证
①、verify_peer:指定是否验证ssl,默认为true ,将verify_peer设为false
②、另外,允许引用外部xml实体 :加libxml_disable_entity_loader(false);
libxml_disable_entity_loader(false);
$opts = array(
"ssl" => array(
"verify_peer" => false
),
"https" => array(
"curl_verify_ssl_peer" => false,
"curl_verify_ssl_host" => false
)
);
$streamContext = stream_context_create($opts);
$client = new SoapClient("https://urlToSoapWs",
array(
"stream_context" => $streamContext
));