Soap Client : No deserializer defined for array type

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • ehsanch
    New Member
    • Mar 2010
    • 11

    Soap Client : No deserializer defined for array type

    Hi
    i am writing a SOAP client,
    when using php 5 soap , it send this code and i get error :
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://magfa.com/soap/SOAPSmsQueue" xmlns:xsd=http://www.w3.org/2001/XMLSchema 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
    <ns1:enqueue>
    <domain xsi:type="xsd:string">magfa</domain>
    <messageBodies SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOf_xsd_string"><item xsi:type="xsd:string">test magfa gateway</item></messageBodies>
    <recipientNumbers SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOf_xsd_string"><item xsi:type="xsd:string">9123456789</item></recipientNumbers>
    <senderNumbers SOAP-ENC:arrayType="xsd:string[1]" xsi:type="ns1:ArrayOf_xsd_string"><item xsi:type="xsd:string">22222</item></senderNumbers>
    <encodings SOAP-ENC:arrayType="xsd:int[1]" xsi:type="ns1:ArrayOf_xsd_int"><item xsi:type="xsd:int">0</item></encodings>
    <udhs xsi:nil="true" xsi:type="ns1:ArrayOf_xsd_string"/>
    <messageClasses xsi:nil="true" xsi:type="ns1:ArrayOf_xsd_int"/>
    <priorities xsi:nil="true" xsi:type="ns1:ArrayOf_xsd_int"/>
    <checkingMessageIds xsi:nil="true" xsi:type="ns1:ArrayOf_xsd_long"/>
    </ns1:enqueue>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Error :
    Code:
    <faultstring>org.xml.sax.SAXException: No deserializer defined for array type {http://www.w3.org/2001/XMLSchema}string</faultstring>
    But when using nusoap it work :

    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:impl="http://magfa.com/soap/SOAPSmsQueue">
    <SOAP-ENV:Body>
    <impl:enqueue xmlns:impl="http://magfa.com/soap/SOAPSmsQueue">
    <domain xsi:type="xsd:string">magfa
    </domain>
    <messageBodies xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[1]">
    <item xsi:type="xsd:string">test</item></messageBodies>
    <recipientNumbers xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[1]"><item xsi:type="xsd:string">9123456789</item></recipientNumbers>
    <senderNumbers xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[1]"><item xsi:type="xsd:string">22222</item>
    </senderNumbers>
    <encodings xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[1]"><item xsi:type="xsd:int">1</item></encodings>
    <udhs xsi:nil="true" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:string[0]"/>
    <messageClasses xsi:nil="true" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[0]"/>
    <priorities xsi:nil="true" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:int[0]"/>
    <checkingMessageIds xsi:nil="true" xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:long[0]"/>
    </impl:enqueue>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    wsdl is here

    any help ?
    TNX
  • ehsanch
    New Member
    • Mar 2010
    • 11

    #2
    i found the solution
    use 'features' param and set it to SOAP_USE_XSI_AR RAY_TYPE

    eg,
    Code:
    <?php
    $soapclient = new SoapClient("webservice.wsdl", array('features' => SOAP_USE_XSI_ARRAY_TYPE));
    ?>

    Comment

    Working...