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