cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Response ? Namespace

olaf_lehmann
Explorer
0 Kudos
227

Hi

Following Problem

Scenario

Step 1

Sending a SOAP Request to a Webservice.

( PTV GEO Coder )Message Interface Outbound / Synchronous

<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'><SOAP:Header/><SOAP:Body><nr1:Request xmlns:nr1='http://www.w3.org/2001/XMLSchema-instance' Type='eLocate.Locate' Version='1' User='Example' Pwd='Pwd'>

<GeocodeParameters MaxResults='1' UniquenessFilter='false' SortFieldCount='2'>

<SortField Name='Weight' Order='Descending'/>

<SortField Name='PostCode'Order='Ascending'/>

</GeocodeParameters><Address Country='D' PostCode='10245' City='Berlin' CityDistrict='Friedrichshain' Street='Dirschauer' HouseNumber='17'/>

</nr1:Request>

</SOAP:Body>

</SOAP:Envelope>

2. PTV Geo

Getting a Response from PTV

Message Interface Inbound / Synchronous

Response string: <?xml version="1.0" encoding="UTF-8"?><SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><SOAP:Body><Response xmlns="http://xml.ptv.de/eServer/eLocateServer/xml/eLocateServer.Locate.v2.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.ptv.de/eServer/eLocateServer/xml/eLocateServer.Locate.Response.v1.xsd" Type="eLocate.Locate" Version="1" Status="0"><InputAddress InputAddress="D10245BerlinFriedrichshainDirschauer~17"/><Addresses AddressCount="2" ResultListExceeded="0"><Address Country="D" PostCode="10245" City="Berlin" CityDistrict="Friedrichshain" Street="Dirschauer Str." HouseNumber="17" X="1496389" Y="6884982" CityID="11000000" Weight="100" Classification="" DetailLevel="7" DetailInformation="0" Unique="false" Levelling="15" Population="8" Area="0" MainEntry="false" UserFieldCount="0" ResultJunctionNode="0" AmbiguitiesResolved="0" SegmentID="53504555"/><Address Country="D" PostCode="10245" City="Berlin" CityDistrict="Friedrichshain" Street="" HouseNumber="" X="1496260" Y="6885766" CityID="11000000" Weight="68" Classification="" DetailLevel="4" DetailInformation="8" Unique="false" Levelling="15" Population="8" Area="0" MainEntry="false" UserFieldCount="0" ResultJunctionNode="0" AmbiguitiesResolved="0" SegmentID="-1"/></Addresses></Response></SOAP:Body></SOAP:Envelope>

3. Problem

Inbound Interface

In the moment when the Soap Response is convert to the input Data Type Response not all data are past.

Type="eLocate.Locate" Version="1" Status="0" are OK

but the rest is not in the there ?

The Problem is coming form the Namespace ="http://xml.ptv.de/eServer/eLocateServer/xml/eLocateServer.Locate.v2.wsdl"

Testing the Response Message without this Name space all is fine.

So the question is what to due ??

The information from the PTV server (SOAP Response)can not be changed ?

I need some help

Thank a lot Olaf

Message was edited by: Olaf Lehmann

Accepted Solutions (0)

Answers (2)

Answers (2)

stefan_grube
Active Contributor
0 Kudos

Hi Olaf,

how do you call that web service? Did you create a proxy or RFC to call the XI? How did you create the data type? Did you upload the WSDL or create the data type by your own?

The easiest way to get rid of this namespace is, to create a mapping between the SOAP response and the response of your message type in repository. You just upload an example XML file to the graphical mapping tool, or you upload the WSDL to an external definition object and use that for mapping.

If you create the outbound interface (for proxy) directly from the WSDL definition, everything should work fine.

regards

Stefan

olaf_lehmann
Explorer
0 Kudos

Hi Stefan

first of all thank you for you fast reply

1. SOAP Internal SOAP Adt.

2. Proxy

3. by your own

So you say to convert the respons string to a XML file

Create a Message Mapping ?

Upload this file xlm response file . ( SOAP RESPONSE PTV )

Upload the Response Data message type

make the mapping.

Is this the Way ?

Thanks

stefan_grube
Active Contributor
0 Kudos

yes, this could be a way.

If you upload the WSDL as external definition, relate your interface to this and create a proxy for it, the namespaces are be correct and you need no mapping here.

In your scenario the proxy interface is slightly different to the SOAP interface, so you need a mapping.

Regards

Stefan

olaf_lehmann
Explorer
0 Kudos

Thanks Stefan

The mapping is working but

where to inclode the mapping. ?

stefan_grube
Active Contributor
0 Kudos

Hi Olaf,

you create in interface mapping and include the message mapping there.

The sending interface is your proxy interface. The receiver interface is that one, you create in the receiver agreement of the SOAP adapter.

When you did not create an interface in the IR for that purpose, just type any virtual name and namespace for it, but make sure, that the interface mapping in IR and the interface determination in ID correspond.

Regards

Stefan

olaf_lehmann
Explorer
0 Kudos

Sorry Step 2 is like

Response string:

<?xml version="1.0" encoding="UTF-8"?><SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"><SOAP:Body>

<Response xmlns="http://xml.ptv.de/eServer/eLocateServer/xml/eLocateServer.Locate.v2.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.ptv.de/eServer/eLocateServer/xml/eLocateServer.Locate.Response.v1.xsd" Type="eLocate.Locate" Version="1" Status="0"><InputAddress InputAddress="D10245BerlinFriedrichshainDirschauer~17"/><Addresses AddressCount="2" ResultListExceeded="0"><Address Country="D" PostCode="10245" City="Berlin" CityDistrict="Friedrichshain" Street="Dirschauer Str." HouseNumber="17" X="1496389" Y="6884982" CityID="11000000" Weight="100" Classification="" DetailLevel="7" DetailInformation="0" Unique="false" Levelling="15" Population="8" Area="0" MainEntry="false" UserFieldCount="0" ResultJunctionNode="0" AmbiguitiesResolved="0" SegmentID="53504555"/><Address Country="D" PostCode="10245" City="Berlin" CityDistrict="Friedrichshain" Street="" HouseNumber="" X="1496260" Y="6885766" CityID="11000000" Weight="68" Classification="" DetailLevel="4" DetailInformation="8" Unique="false" Levelling="15" Population="8" Area="0" MainEntry="false" UserFieldCount="0" ResultJunctionNode="0" AmbiguitiesResolved="0" SegmentID="-1"/></Addresses>

</Response>

</SOAP:Body>

</SOAP:Envelope>