| Autor | Zpráva | ||
|---|---|---|---|
| quatzael Profil |
V SoapUI testuju webovou službu. Když tam pošlu tenhle request tak to funguje:
<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> Problém je, že už nějak nedokážu vytvořit ten stejný request pomocí SoapClienta v PHP. V souboru wsdl je tahle funkce definována takto: <xs:element name="mainFunction"> <xs:complexType> <xs:sequence> <xs:element name="login" type="common:LoginStructure" minOccurs="1" maxOccurs="1"/> <xs:element name="xmlData" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="option" type="xs:boolean" minOccurs="1" maxOccurs="1"> </xs:element> </xs:sequence> </xs:complexType> </xs:element> A v PHP mám tenhle kód: <?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); Parametr login je v pořádku. Zastaví se to na tom parametru xmlData a hodí to chybu: Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'xmlData' property Místo objektu $xml_input jsem zkoušel jako parametr vkládat i přímo xml jako string ($xml) nebo simplexml_load_string($xml);, ale zdá se že nic nefunguje.
V dokumentaci je poznámka, že je nutné zakázat http přenos pomocí kódování CHUNKED, ale netuším jestli tohle je přímo ten problém ani jak se to vůbec dělá.. Nenapadá prosím někoho něco? |
||
|
Časová prodleva: 11 let
|
|||
0