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?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0