我必须向SOAP Web服务发出请求,并且我成功使用了以下代码。
$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
尝试调试问题,我使用wget测试了webservice并且响应是正确的。
wget http://myhost.foo/ws/ws.asmx?WSDL --post-file=post.xml
--header="Content-Type: text/xml" -O response.xml
我想知道我在这行上做错了什么: $ client = new SoapClient('http://myhost.foo/ws/ws.asmx?WSDL', array('cache_wsdl'=&gt; false, 'trace'=&gt;假, '例外'=&GT;假, 'soap_version'=&gt; 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 :(得分:0)
如果问题刚刚开始,则表明数据源方面发生了一些变化。
我建议确保没有更改SSL证书或数据格式。在这种情况下,wget仍然可以工作,而SOAP则不会。