我正在尝试实现一个Web服务 . 当我使用SoapUI并发送原始XML请求时,它完美地工作:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:web="http://ws.wsdomain.com">
<soap:Header/>
<soap:Body>
<web:mainFunction>
<login>
<loginData>
<name>Freak</name>
<password>qwerty</password>
</loginData>
</login>
<xmlData>
<![CDATA[
<data>
<id>123456</id>
<value>69</value>
</data>
]]>
</xmlData>
</web:mainFunction>
</soap:Body>
</soap:Envelope>
但是,如果我尝试使用PHP SoapClient,它就行不通 .
<?php
class loginData {var $name = 'Freak'; var $password = 'qwerty';}
class login {var $loginData;}
class login_input {var $login;}
$loginData = new loginData;
$login = new login;
$login->loginData = $loginData;
$login_input = new ins;
$login_input->login = $login;
$xml = '<data>
<id>123456</id>
<value>69</value>
</data>';
class xmlData {var $xmlData;}
$xmlData = new xmlData;
$xmlData->xmlData = $xml;
class xml_input {var $xmlData;}
$xml_input = new xml_input;
$xml_input->xmlData = $xmlData;
$soapClient = new SoapClient("https://test.ws.wsdomain.com/files/services/structure?wsdl", array('trace' => 1,'cache_wsdl' => WSDL_CACHE_NONE));
$ws_result = $soapClient->mainFunction($login_input,$xml_input,true);
它抛出:
致命错误:未捕获的SoapFault异常:[客户端] SOAP-ERROR:编码:对象没有'xmlData'属性
第一个参数(登录)工作正常 . 但是第二个用XML数据是一个完全痛苦的...
我尝试了几乎所有的东西(而不是$ xml变量中的简单XML字符串,我也尝试使用simplexml_load_string函数将它放入一个simplexml对象),但似乎没有任何效果 .