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: 10 let
|
0