cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SOAP Header with authentication

former_member198445
Participant
0 Likes
4,668

Hello experts,

I am trying to consume an external web service in SAP PI (Proxy -> SOAP). The web service uses SOAP 1.1 and has the following SOAP header:

<soapenv:Header>

      <urn:AuthenticationInfo>

         <urn:userName> </urn:userName>

         <urn:password> </urn:password>

         <!--Optional:-->

         <urn:authentication>?</urn:authentication>

         <!--Optional:-->

         <urn:locale>?</urn:locale>

         <!--Optional:-->

         <urn:timeZone>?</urn:timeZone>

      </urn:AuthenticationInfo>

   </soapenv:Header>

My question is if I can fill the SOAP Header from the proxy consuming ABAP program or do I have to wrote an XSLT mapping for this?

Or, alternatively, will the SOAP Receiver adapter automatically fill the credentials if I maintain the Authentication details in the ID Communication channel?

Looking forward to your responses.

Regards..

View Entire Topic
former_member198445
Participant
0 Likes

Hello experts.

I have used an XSLT mapping and have managed to generate the request message.

Now I have an issue with the response.

My response structure is:

<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>

      <ns0:UpdateTaskResponse xmlns:ns0="urn:EQU:SAP:UpdateTask">

         <ns0:Request_ID>000000000000008</ns0:Request_ID>

      </ns0:UpdateTaskResponse>

   </soapenv:Body>

</soapenv:Envelope>

I am unable to map this to my response message type.

I tried using this XSLT:

<?xml version="1.0"?>

<xsl:stylesheet xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output encoding="UTF-8" method="xml"/>

    <xsl:template match="*">

      <xsl:copy-of select="soap:Body/*"/>

    </xsl:template>

</xsl:stylesheet>

But I am still not able to process the response.

Any help on this please?

former_member198445
Participant
0 Likes

I finally got this scenario working.

The issue was that, in spite of ticking the ‘Do not use SOAP envelope’ checkbox, the response message was wrapped in a SOAP envelope. Also, my endpoint URL in the SOAP comm channel wasn’t the correct one ( I had wrongly used the WSDL link and not the endpoint).

So I changed the URL and then created an inbound XSLT for removing the SOAP envelope from the response message.

The XSLT mentioned in my previous response worked a charm.

I picked up both the XSLTs from Simone Pantaleoni's responses in other threads..

Thanks to all..