Php SOAP错误-解析SSLv3中的WSDL
我在SoapClient(PHP7.0)解析wsdl时遇到问题 我收到这个错误:Php SOAP错误-解析SSLv3中的WSDL,php,apache,laravel,soap,wsdl,Php,Apache,Laravel,Soap,Wsdl,我在SoapClient(PHP7.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-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]);
我注意到那个网站在SSLv3下。为了找出问题所在,我还注意到我无法获取WSDL的内容:
$content = file_get_contents('https://ws.ocasa.com/testecommerce/service.asmx?wsdl');
我得到了这个错误
file_get_contents(): Failed to enable crypto
我不知道它是否在我的PHP.ini中。但如果我更改为另一个WSDL:
https://id3check.gb.co.uk/gbportalinternational/aspx/id3check_1b.asmx?WSDL
一切正常,解析和获取内容
谢谢所以我通过添加可选参数SSL解决了这个问题:
$wurl = 'https://ws.ocasa.com/testecommerce/service.asmx?wsdl';
$opts = array(
'ssl' => array('ciphers' => 'RC4-SHA')
);
$this->soapClient = new SoapClient($wurl, array('trace' => 1,
'exception' => 1, 'soap_version' => SOAP_1_2, 'connection_timeout' => 60, 'stream_context' => stream_context_create($opts)));
感谢您的帮助!可能重复!。我编辑了我的文章,以便您可以看到我的问题不是我无法获取wsdl的内容,而是我的SoapClient不能使用该wsdl。在你发给我的帖子中,解释了如何以不同的方式获取内容,我的想法是提供更多关于我的情况的信息,这样也许有人可以知道发生了什么。谢谢你不,您的问题是,由于SSLv3(可能),PHP无法从该服务器获取内容。它与SoapClient无关<代码>文件\u获取\u内容():无法启用加密非常清晰。尝试类似的方法,看看是否有帮助您还可以在此处找到有关PHP如何处理SSL证书的更多信息:My PHP is 7.0。我发现,问题就出在这里,SSL是TLS1.0,在PHP7.0中不起作用。