2014-02-20 187 views
1

我必須向SOAP Web服務發出請求,並且我成功使用了以下代碼。PHP SOAP不起作用,但wget工作

$client = new SoapClient('http://myhost.foo/ws/ws.asmx?WSDL', 
    array('cache_wsdl' => false, 
      'trace' => false, 
      'exceptions'=>false, 
      'soap_version' => SOAP_1_2)); 

$params['method']['param'] = $somedata; 
$params['method']['clientIP'] = $_SERVER['REMOTE_ADDR']; 

$result = $client->__soapCall('method', $params); 

我開始收到以下錯誤,這些天,在第一行代碼:

PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load 
from 'http://myhost.foo/ws/ws.asmx?WSDL' : Start tag expected, 
'<' not found 

嘗試調試的問題,我測試的web服務與wget和響應是正確的。

wget http://myhost.foo/ws/ws.asmx?WSDL --post-file=post.xml 
--header="Content-Type: text/xml" -O response.xml 

我想知道我在這一行做錯誤的: $客戶端=新SoapClient的( 'http://myhost.foo/ws/ws.asmx?WSDL', 陣列( 'cache_wsdl'=>假, '跟蹤'=>假, 'exceptions'=> false, 'soap_version'=> SOAP_1_2));

編輯:

如果我得到的WSDL內容,並放在一個XML文件,並在本地使用它,一切正常。

$client = new SoapClient('wsdl.xml', array(
    'location'=> 'http://myhost.foo/ws/ws.asmx', 
    'uri'=> 'http://tempuri.org/', 
    'soap_version' => SOAP_1_2, 
    'trace' => true, 
    'cache_wsdl' => WSDL_CACHE_NONE, 
    'keep_alive' => false)); 

回答

0

如果問題剛剛開始,它表明在數據源方面有所改變。

我建議確保SSL證書或數據格式沒有變化。在這種情況下,wget仍然可以工作,而SOAP不會。

+0

我相信數據源方面的一些變化與以前一樣,但維護Web服務的人說,沒有其他客戶端遇到問題,我認爲這可能是我的一個問題。 – javsmo

相關問題