cancel
Showing results for 
Search instead for 
Did you mean: 

soap encoded array of complex type, impossible to map?

Former Member
0 Kudos

Hello,

can anyone please tell me if the XI has problems (or is unable) to read from soap-encoded arrays of a complex type.

As far as I know this is conform to SOAP 1.1

We developed this webservice for a client, who says, he cannot map this kind of array in his XI.

Would it be better to do it this way ?

<complexType name="ActivityList">

<sequence>

<element name="ActivityEl" maxOccurs="unbounded" type="Activity"/>

</sequence>

</complexType>

Excerpt of the WSDL:

<wsdl:message name="getDataForPbnrResponse">

<wsdl:part name="getDataForPbnrReturn" type="impl:ArrayOf_tns1_Activity"/>

</wsdl:message>

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://ipslsv01vm02:9080/axis/services/QEC-Service">

<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

<complexType name="ArrayOf_tns1_Activity">

<complexContent>

<restriction base="soapenc:Array">

<attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:Activity[]"/>

</restriction>

</complexContent>

</complexType>

<complexType name="ArrayOf_tns1_ActivityFeedback">

<complexContent>

<restriction base="soapenc:Array">

<attribute ref="soapenc:arrayType" wsdl:arrayType="tns1:ActivityFeedback[]"/>

</restriction>

</complexContent>

</complexType>

</schema>

Part ot the response:

<?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:getDataForPbnrResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://ipslsv01vm02:9080/axis/services/QEC-Service">

<getDataForPbnrReturn xsi:type="soapenc:Array" soapenc:arrayType="ns3:Activity[7]" xmlns:ns2="http://www.w3.org/2002/12/soap-encoding" xmlns:ns3="urn:BeanService" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">

<item href="#id0"/>

<item href="#id1"/>

<item href="#id2"/>

<item href="#id3"/>

<item href="#id4"/>

<item href="#id5"/>

<item href="#id6"/>

</getDataForPbnrReturn>

</ns1:getDataForPbnrResponse>

<multiRef id="id5" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns4:Activity" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4="urn:BeanService">

<FIN xsi:type="xsd:string">---</FIN>

<VIN xsi:type="xsd:string"></VIN>

-


cut -


<ursache xsi:type="xsd:string"></ursache>

</multiRef>

</soapenv:Body>

</soapenv:Envelope>

Thanks in advance!

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

I am having this issue as well.

From:

http://help.sap.com/saphelp_nw04/helpdata/en/43/ce993b45cb0a85e10000000a1553f6/frameset.htm

I see that:

The WSDL document in rpc-style format must also not use any soapenc:Array types; these are often used in SOAP code in documents with this format. soapenc:Array uses the tag <xsd:any>, which the Integration Builder editors or proxy generation either ignore or do not support.

You can replace soapenc:Array types with an equivalent <sequence>; see the WS-I example under http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16556272.

They give an example of what to use instead.

Of course I have been given a WSDL that has a message I need to map to that uses the enc:Array.

Has anyone else had this issue? I need to map to a SOAP message to send to an external party. I don't know what they are willing to change to support what I can do. I changed the WSDL to use a sequence as below just to pull it in for now.

Thanks,

Eric