我正在尝试实施一项网络服务。 当我使用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:编码:对象没有&#39; xmlData&#39;属性
第一个参数(登录)工作正常。但是第二个使用XML数据是一个痛苦的事情。
我几乎尝试了所有东西(而不是$ xml变量中的简单XML字符串,我也尝试使用simplexml_load_string函数将其放入一个simplexml对象中)但似乎没有任何效果。