You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by thusa gihan <th...@gmail.com> on 2008/10/07 07:56:27 UTC

WS call returns "Can't decode apache map"

Hi,

This is my first post to the group.

I have generated client side Java classes using a WSDL2Java tool, and when I
call the WS, it returns the following error message.

SOAP-ENV:Server

SOAP-ERROR: Encoding: Can't decode apache map, only Strings or Longs are
allowd as keys

I don't have access to the server side of the web service. I only see the
above error message.

I guess this to be a common issue; and looking for some assistance for
resolving this issue.

Thanks,
Thusa

Re: WS call returns "Can't decode apache map"

Posted by thusa gihan <th...@gmail.com>.
Yes, I have all of those.

WSDL: (start)
----------------------------------

 <?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:typens="urn:Company"
 xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
 xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
 xmlns="http://schemas.xmlsoap.org/wsdl/" name="Company"
 targetNamespace="urn:Company">
 <types>
  <schema xmlns="http://www.w3.org/2001/XMLSchema"
   targetNamespace="urn:Company">
   <import
    namespace="http://schemas.xmlsoap.org/soap/encoding/"
    schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
   <complexType name="FixedArray">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType"
       wsdl:arrayType="xsd:anyType[]" />
     </restriction>
    </complexContent>
   </complexType>
  </schema>
 </types>
 <message name="call">
  <part name="sessionId" type="xsd:string" />
  <part name="resourcePath" type="xsd:string" />
  <part name="args" type="xsd:anyType" />
 </message>
 <message name="callResponse">
  <part name="callReturn" type="xsd:anyType" />
 </message>
 <message name="multiCall">
  <part name="sessionId" type="xsd:string" />
  <part name="calls" type="typens:FixedArray" />
  <part name="options" type="xsd:anyType" />
 </message>
 <message name="multiCallResponse">
  <part name="multiCallReturn" type="typens:FixedArray" />
 </message>
 <message name="endSession">
  <part name="sessionId" type="xsd:string" />
 </message>
 <message name="endSessionResponse">
  <part name="endSessionReturn" type="xsd:boolean" />
 </message>
 <message name="login">
  <part name="username" type="xsd:string" />
  <part name="apiKey" type="xsd:string" />
 </message>
 <message name="loginResponse">
  <part name="loginReturn" type="xsd:string" />
 </message>
 <message name="resources">
  <part name="sessionId" type="xsd:string" />
 </message>
 <message name="resourcesResponse">
  <part name="resourcesReturn" type="typens:FixedArray" />
 </message>
 <message name="globalFaults">
  <part name="sessionId" type="xsd:string" />
 </message>
 <message name="globalFaultsResponse">
  <part name="globalFaultsReturn" type="typens:FixedArray" />
 </message>
 <message name="resourceFaults">
  <part name="resourceName" type="xsd:string" />
  <part name="sessionId" type="xsd:string" />
 </message>
 <message name="resourceFaultsResponse">
  <part name="resourceFaultsReturn" type="typens:FixedArray" />
 </message>
 <message name="startSession" />
 <message name="startSessionResponse">
  <part name="startSessionReturn" type="xsd:string" />
 </message>
 <portType name="Comp_Api_Model_Server_HandlerPortType">
  <operation name="call">
   <documentation>Call api functionality</documentation>
   <input message="typens:call" />
   <output message="typens:callResponse" />
  </operation>
  <operation name="multiCall">
   <documentation>
    Multiple calls of resource functionality
   </documentation>
   <input message="typens:multiCall" />
   <output message="typens:multiCallResponse" />
  </operation>
  <operation name="endSession">
   <documentation>End web service session</documentation>
   <input message="typens:endSession" />
   <output message="typens:endSessionResponse" />
  </operation>
  <operation name="login">
   <documentation>
    Login user and retrive session id
   </documentation>
   <input message="typens:login" />
   <output message="typens:loginResponse" />
  </operation>
  <operation name="startSession">
   <documentation>Start web service session</documentation>
   <input message="typens:startSession" />
   <output message="typens:startSessionResponse" />
  </operation>
  <operation name="resources">
   <documentation>List of available resources</documentation>
   <input message="typens:resources" />
   <output message="typens:resourcesResponse" />
  </operation>
  <operation name="globalFaults">
   <documentation>List of resource faults</documentation>
   <input message="typens:globalFaults" />
   <output message="typens:globalFaultsResponse" />
  </operation>
  <operation name="resourceFaults">
   <documentation>List of global faults</documentation>
   <input message="typens:resourceFaults" />
   <output message="typens:resourceFaultsResponse" />
  </operation>
 </portType>
 <binding name="Comp_Api_Model_Server_HandlerBinding"
  type="typens:Comp_Api_Model_Server_HandlerPortType">
  <soap:binding style="rpc"
   transport="http://schemas.xmlsoap.org/soap/http" />
  <operation name="call">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="multiCall">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="endSession">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="login">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="startSession">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="resources">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="globalFaults">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
  <operation name="resourceFaults">
   <soap:operation
    soapAction="urn:Comp_Api_Model_Server_HandlerAction" />
   <input>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </input>
   <output>
    <soap:body namespace="urn:Company" use="encoded"
     encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
   </output>
  </operation>
 </binding>
 <service name="CompanyService">
  <port name="Comp_Api_Model_Server_HandlerPort"
   binding="typens:Comp_Api_Model_Server_HandlerBinding">
   <soap:address
    location="http://localhost/Company/index.php/api/index/index/" />
  </port>
 </service>
</definitions>

WSDL (end)
----------------------------------

Here is the Request
----------------------------------

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="
http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="
http://www.w3.org/2001/XMLSchema" xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <ns1:call soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="urn:Company">
            <sessionId
xsi:type="xsd:string">1vp029hcubiiven8cr1s21nke2</sessionId>
            <resourcePath
xsi:type="xsd:string">customer.create</resourcePath>
            <args soapenc:arrayType="xsd:anyType[1]"
xsi:type="soapenc:Array" xmlns:soapenc="
http://schemas.xmlsoap.org/soap/encoding/">
               <args href="#id0"/>
            </args>
         </ns1:call>
         <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Map"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="
http://xml.apache.org/xml-soap">
            <item>
               <key xsi:type="soapenc:string">email</key>
               <value xsi:type="soapenc:string">myemail13@domain.com</value>
            </item>
            <item>
               <key xsi:type="soapenc:string">lastname</key>
               <value xsi:type="soapenc:string">myLastName</value>
            </item>
            <item>
               <key xsi:type="soapenc:string">firstname</key>
               <value xsi:type="soapenc:string">MyFirstName</value>
            </item>
         </multiRef>
      </soapenv:Body>
   </soapenv:Envelope>

Request (end)
----------------------------------------

The response is as follows.
----------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
   <SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/">
      <SOAP-ENV:Body>
         <SOAP-ENV:Fault>
            <faultcode>SOAP-ENV:Server</faultcode>
            <faultstring>SOAP-ERROR: Encoding: Can't decode apache map, only
Strings or Longs are allowd as keys</faultstring>
         </SOAP-ENV:Fault>
      </SOAP-ENV:Body>
   </SOAP-ENV:Envelope>

response (end)
----------------------------------------

These are the files involed here. I used Axis 1.4 to generate the stub
classes.

Thanks,
Thusa




On Tue, Oct 7, 2008 at 1:35 PM, Samisa Abeysinghe <
samisa.abeysinghe@gmail.com> wrote:

> 1. Could you send the WSDL?
> 2. Do you have the request and response messages captured?
>
> Samisa...
>
>
> thusa gihan wrote:
>
>> Hi,
>>
>> This is my first post to the group.
>>
>> I have generated client side Java classes using a WSDL2Java tool, and when
>> I call the WS, it returns the following error message.
>>
>> SOAP-ENV:Server
>>
>> SOAP-ERROR: Encoding: Can't decode apache map, only Strings or Longs are
>> allowd as keys
>>
>> I don't have access to the server side of the web service. I only see the
>> above error message.
>>
>> I guess this to be a common issue; and looking for some assistance for
>> resolving this issue.
>>
>> Thanks,
>> Thusa
>>
>
>
> --
> Samisa Abeysinghe
>
> http://people.apache.org/~samisa/
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>

Re: WS call returns "Can't decode apache map"

Posted by Samisa Abeysinghe <sa...@gmail.com>.
1. Could you send the WSDL?
2. Do you have the request and response messages captured?

Samisa...

thusa gihan wrote:
> Hi,
>
> This is my first post to the group.
>
> I have generated client side Java classes using a WSDL2Java tool, and 
> when I call the WS, it returns the following error message.
>
> SOAP-ENV:Server
>
> SOAP-ERROR: Encoding: Can't decode apache map, only Strings or Longs 
> are allowd as keys
>
> I don't have access to the server side of the web service. I only see 
> the above error message.
>
> I guess this to be a common issue; and looking for some assistance for 
> resolving this issue.
>
> Thanks,
> Thusa


-- 
Samisa Abeysinghe

http://people.apache.org/~samisa/


---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org