cancel
Showing results for 
Search instead for 
Did you mean: 

Empty message / missing structure when two wsdl:part tags

0 Kudos

Hi,

I'm trying to load a WSDL provided by another system. If I load the WSDL as an external definition in the services builder, I get no errors, but one message is missing the correct structure:

Anyone know how to do this, or is this a limitation of SAP PI?

Also, the message contains a soap:body and soap:header. Once WSDL import works, how can I fill the header?

            <wsdl:input>

                <soap:header message="tns:MeldToetsverslagRequest" part="request_header" use="literal"/>

                <soap:body parts="parameters" use="literal"/>

            </wsdl:input>

Thanks for your help!

Kind regards,

Walter.

WSDL:

<?xml version="1.0" encoding="utf-8"?>

<wsdl:definitions name="Toetsverslag_v1_0"  targetNamespace="http://www.prorail.nl/rrcb"

  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

  xmlns:xsd="http://www.w3.org/2001/XMLSchema"

  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

  xmlns:tns="http://www.prorail.nl/rrcb">

    <wsdl:types>

        <xsd:schema targetNamespace="http://www.prorail.nl/rrcb">

            <xsd:element name="MeldToetsverslag">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="ToetsVerslag">

                            <xsd:complexType>

                                <xsd:sequence>

                                    <xsd:element name="ToetsID" type="xsd:long" minOccurs="0"/>

                                    <xsd:element name="OntvangenToetsverslag_Toetsbijlage" minOccurs="0" maxOccurs="1">

                                        <xsd:complexType>

                                            <xsd:sequence>

                                                <xsd:element name="Toetsbijlage" minOccurs="0" maxOccurs="1">

                                                    <xsd:complexType>

                                                        <xsd:sequence>

                                                            <xsd:element name="Name" type="xsd:string" minOccurs="1"/>

                                                            <xsd:element name="Contents" type="xsd:base64Binary" minOccurs="1"/>

                                                        </xsd:sequence>

                                                    </xsd:complexType>

                                                </xsd:element>

                                            </xsd:sequence>

                                        </xsd:complexType>

                                    </xsd:element>

                                    <xsd:element name="OntvangenToetsverslag_OntvangenContractgebied" minOccurs="0" maxOccurs="1">

                                        <xsd:complexType>

                                            <xsd:sequence>

                                                <xsd:element name="OntvangenContractgebied" minOccurs="0" maxOccurs="1">

                                                    <xsd:complexType>

                                                        <xsd:sequence>

                                                            <xsd:element name="Naam" type="xsd:string" minOccurs="1"/>

                                                        </xsd:sequence>

                                                    </xsd:complexType>

                                                </xsd:element>

                                            </xsd:sequence>

                                        </xsd:complexType>

                                    </xsd:element>

                                </xsd:sequence>

                            </xsd:complexType>

                        </xsd:element>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>

            <xsd:element name="MeldToetsverslagResponse">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="WebserviceResponse">

                            <xsd:complexType>

                                <xsd:sequence>

                                    <xsd:element name="VerwerktOK" type="xsd:boolean" minOccurs="1"/>

                                    <xsd:element name="Foutmelding" type="xsd:string" minOccurs="1"/>

                                    <xsd:element name="ToetsId" type="xsd:long" minOccurs="0"/>

                                </xsd:sequence>

                            </xsd:complexType>

                        </xsd:element>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>

            <xsd:element name="authentication">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="username" type="xsd:string"/>

                        <xsd:element name="password" type="xsd:string"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>

        </xsd:schema>

    </wsdl:types>

    <wsdl:message name="MeldToetsverslagRequest">

        <wsdl:part name="request_header" element="tns:authentication"/>

        <wsdl:part name="parameters" element="tns:MeldToetsverslag"/>

    </wsdl:message>

    <wsdl:message name="MeldToetsverslagResponse">

        <wsdl:part name="result" element="tns:MeldToetsverslagResponse"/>

    </wsdl:message>

    <wsdl:portType name="Toetsverslag_v1_0PortType">

        <wsdl:operation name="MeldToetsverslag">

            <wsdl:documentation>

            </wsdl:documentation>

            <wsdl:input message="tns:MeldToetsverslagRequest"/>

            <wsdl:output message="tns:MeldToetsverslagResponse"/>

        </wsdl:operation>

    </wsdl:portType>

    <wsdl:binding name="Toetsverslag_v1_0Soap" type="tns:Toetsverslag_v1_0PortType">

        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

        <wsdl:operation name="MeldToetsverslag">

            <soap:operation soapAction="http://www.prorail.nl/rrcbMeldToetsverslag"/>

            <wsdl:input>

                <soap:header message="tns:MeldToetsverslagRequest" part="request_header" use="literal"/>

                <soap:body parts="parameters" use="literal"/>

            </wsdl:input>

            <wsdl:output>

                <soap:body use="literal"/>

            </wsdl:output>

        </wsdl:operation>

    </wsdl:binding>

    <wsdl:service name="Toetsverslag_v1_0">

        <wsdl:port name="Toetsverslag_v1_0Port" binding="tns:Toetsverslag_v1_0Soap">

            <soap:address location="http://rrcb-a.prorail.nl/ws/Toetsverslag_v1_0/"/>

        </wsdl:port>

    </wsdl:service>

</wsdl:definitions>

Accepted Solutions (1)

Accepted Solutions (1)

manoj_khavatkopp
Active Contributor
0 Kudos

Hi Walter,

For the message which is missing you need to ask the third party that respective xsd and you need to import that one too.

for building soap envelope you need to go for java mapping or xslt.

Br,

Manoj

former_member186851
Active Contributor
0 Kudos

Hello Walter,

Adding to Navins point,Check the WSDL in notepad++,Might be some field or type definition is wrong.

And for adding soap header you can refer the below discussion

JAVA/ XSLT Mapping to Create a SOAP Envelope | SCN

Answers (1)

Answers (1)

0 Kudos

THanks for your help guys. I was able to solve it by disabling envelope and header handling in the adapter and adding an xslt in the mapping (to manually add envelope with headers). I had to change the WSDL to only have one message part (body).

interface works now.