2017-06-27 55 views
0

Im有一個SoapClient(PHP 7.0)解析wsdl的問題。SOAP錯誤 - 解析SSLv3中的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" 

如果你把這個網址在瀏覽器中就可以看到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 

一切工作正常,解析和獲取內容。

謝謝

+0

【如何獲取文件\ _get \ _contents()與HTTPS合作?](HTTPS的可能重複: //www.stackoverflow.com/questions/1975461/how-to-get-file-get-contents-to-work-with-https) – Capsule

+0

謝謝你試圖幫助!我編輯我的帖子,以便您可以看到我的問題不是我無法獲取wsdl的內容,而是因爲我的SoapClient不支持該WSDL。在發給我的帖子中,解釋瞭如何以不同的方式獲取內容,我的想法是提供更多關於我的情況的信息,以便也許有人能夠弄清楚它發生了什麼。謝謝膠囊! :) –

+0

不,你的問題是,由於SSLv3(可能),PHP無法從該服務器獲取內容。它與SoapClient無關。 'file_get_contents():啓用加密失敗很清楚。嘗試類似於https://stackoverflow.com/questions/14078182/openssl-file-get-contents-failed-to-enable-crypto,看看是否有幫助 – Capsule

回答

0

所以我通過添加可選參數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))); 
相關問題