我遇到SoapClient和PHP 7.0的问题来解析wsdl。
我收到此错误:
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"
如果您将此URL放在浏览器中,您可以看到SOAP,而且在SoapUI中它可以正常工作。
我正在使用laravel 5.4,我的代码是:
$client = new \SoapClient('https://ws.ocasa.com/testecommerce/service.asmx?wsdl',
['soap_version'=>SOAP_1_2]);
我注意到该网站属于SSL TLS 1.0。如果我将PHP更改为5.6,它可以完美地运行,但是使用PHP 7.0它不起作用。
如果我改用其他WSDL:
https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL
一切正常。
谢谢
答案 0 :(得分:0)
您可以选择忽略不良证书:
$endpoint = new SOAPClient($url,
array(
'soap_version'=>SOAP_1_2,
'stream_context' => stream_context_create(
array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false
)
)
)
)
);
如果您无法访问soap服务器来更正证书,或者能够让您的服务器接受证书,这将是一个解决方案。
这应该是最后一个解决方案,因为你确实忽略了所有错误的警告