Data Headers in SOAP adapter Response

Hi there,
I have a working SOAP adapter on Xi 2.0, which accepts incoming requests from SOAP clients, it "transforms" these requests into RFC calls which in turn calls BAPI'S in R/3.
The BIG issue is that Xi (the SOAP adapter) sets and sends a set of headers into the response back to the SOAP client. For security and performance reasons, you dont want the system to send those headers over the net to the SOAP client.
Does anyone knows how to setup Xi in order to suppress these headers in the SOAP response?
PS: Below an example of the headers in the SOAP envelope.
<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>
<SOAP:Header><sap:MessageHeader xmlns:sap='http://sap.com/exchange/MessageFormat' version='1.0'>.......
<Host>xxxx</Host>
<Sysid/>
<Sysnr>00</Sysnr>
<Mandt>200</Mandt>
<Dest/>
<Userid>XI_USER</Userid>
<Passwd>xxxx</Passwd>

If I want to set the content in the SOAP header when the client in SAP XI how would I do that?
I cannot see SOAP Header in XI MONI.
Please advice. I want to add to the contents of SOAP Header created by XI SOAP Receiver Channel.
Thanks
Ashish

Similar Messages

  • TO Get  Ensuring Exactly Once Processing data from sender soap adapt

    To XI Specialists
    Now Im trying to get Ensuring Exactly Once Processing data from sender soap adapteter.
    My plan is that send data from Receiver adapter, to Sender adapter by SOAP.
    (1st interface is ABAP to Soap "BE", 2nd interface is Soap to File "EO")
    Sender SOAP adapter will returun Ensuring Exactly Once Processing data.
    (see SAP HELP, http://help.sap.com/saphelp_nw70/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm )
    AND I want to get Ensuring Exactly Once Processing data, I want to determine what to do in ABAP proxy.
    SO I made and tested 2interface. but error occuered.
    I checked the error, and Now I know what is the cause.
    The cause is that Ensuring Exactly Once Processing data didnt enter the payload, at Receiver Adapter.
    1st interface coulnt get the payload data, so mapping error occuered....
    Please give me help,
    <b>"How to get Ensuring Exactly Once Processing data From Sender SOAP ADAPTER"</b>
    or
    <b>"How to enter Ensuring Exactly Once Processing data into Payload of Receiver SOAP ADAPTER"</b>
    and more excelent way....
    our XI is version7.0 and SP10
    Please teach me your wisdom!
    Naoki Kurihara

    I seeked and I noticed that
    maybe I catched the message but the message dont have payload.
    so I got no_payload error.
    I checked SAP note.
    I noticed, no_payload error will be managed to nomal message at SP13....
    my XI is SP12....
    I ll seek for another way!!
    Thank you! noaki

  • Error in SOAP Adapter Response

    I am getting the following Error in SOAP Response
    ... but when i tried the with ALTOVA XML SPY its working fine..
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="PARSING">ADAPTER.SOAP_EXCEPTION</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>soap fault: Registration Method error</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>

    hi,
    check the XML that you send to the WS
    if the server returned this soap fault it might mean that XML was not correct .
    also take a look at the default.trc log file from visual administrator-> server -> services -> log viewer -> locations -> com -> aii -> bc -> soap
    regards
    kummari
    Edited by: kummari on Jul 29, 2008 5:40 AM

  • SOAP Adapter response

    Hi Group,
    Confifuring webservice->file asynchronous scenario ,in this scenario PI providing the webservice with request and response,once after file request is triggered needs to send back response as OK,can any body suggest how we can
    configure.

    Hello,
    You can try using the request response bean module as shown in this wiki
    http://wiki.sdn.sap.com/wiki/display/XI/UsingRequestResponseBeanModuleinFILE+Adapter
    Hope this helps,
    Mark

  • SOAP Adapter XI 3.0 - HTTP 200 response fails

    We have a scenario where a request message is sent successfully to a URL by the SOAP Adapter.
    However, the response message has an HTTP response of 200 (meaning ok) which is not handled correctly by the
    SOAP Adapter.
    The error text shown in SXMB_MONI is:
    com.sap.aii.af.ra.ms.api.DeliveryException: Failed to call the endpoint HTTP 200 OK
    Is there something I am missing in the configuration to allow HTTP responses in the SOAP Adapter ? It is very odd that the SOAP Request works fine, but the SOAP Response does not.
    Any ideas anyone ?
    Kind regards
    Colin.

    Hi Bill
    1. synchronous out / in
    2. yes
    3. working fine
    following the way out to the elocateserver system is working fine.
    The soap is working and the responce from the elocteserver is fine . But when the message is pick put the Timeout show up.
    below is the Responce from elocateserver to xi
    Hope this will help you
    thanks olaf
    Help
    !http://sapnt09:50200/sap/public/icman/img/theme.jpg|alt=SAP|width=122 height=61 border=0 |src=http://sapnt09:50200/sap/public/icman/img/theme.jpg!
    500 Connection timed out
    Connection timed out (-5)
    Error:
    -5
    Version:
    6040
    Component:
    ICM
    Date/Time:
    Sat Oct 16 06:13:25 2004
    Module:
    icxxthr.c
    Line:
    2556
    Server:
    sapnt09_M64_02
    Detail:
    Connection to partner timed out
    © 2001-2003, SAP AG

  • How to catch the sender SOAP adapter http response?

    Hi eXperts,
    I've a sender soap adapter opened to customer as webservice. When customers call this webservice, data is coming into XI and works fine. But the customer is complaining that the expected HTTP 200 response is not sent back to the calling SOAP client.
    So my question is: Is there a way to catch the http 200 response from sender adapter, or at least get to know if the sender adapter has sent the response?
    Thanks in advance.
    Regards
    Luis

    Hi,
    If I understood it correcly... Sender is a Async SOAP call and the sender system is expcting a status back of HTTP 200. Are you sure you had set the quality of effort to Exactly Once? If not please try setting it.
    You can also go to Adapter monitoring or Communication channel monitoring in the Runtime workbench and see if the Sender SOAP adapter is fine.
    http://help.sap.com/saphelp_nw04/helpdata/en/5e/164442c1a1c353e10000000a1550b0/content.htm
    Thanks,
    Prakash

  • Reading Header data in a SOAP Envelope for SOAP Sender Adapter

    Hello All,
    Am using a SOAP sender adapter and want to use the data inside the SOAP Header for some routing purpose(extended receiver determination). Any SOAP message coming into XI will look something like below. But XI will pass the contents of <SOAP-ENV:Body> to Payload and <SOAP-ENV:Header> to the SOAP Header category you can see that in SXMB_MONI.
    Is there a way to read the data in my SOAP Header to be later used in my extended receiver determination.
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:Q-ENV="/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <SOAP-ENV:Header>
              <Q-ENV:Header>
                   <Q-ENV:Sender-Id>1</Q-ENV:Sender-Id>
                   <Q-ENV:Receiver-Id></Q-ENV:Receiver-Id>
                   <Q-ENV:Correlation-Id></Q-ENV:Correlation-Id>
                   <Q-ENV:Message-Id></Q-ENV:Message-Id>
                   <Q-ENV:Date-Sent></Q-ENV:Date-Sent>
                   <Q-ENV:Document-Type></Q-ENV:Document-Type>
                   <Q-ENV:Message-Format></Q-ENV:Message-Format>
              </Q-ENV:Header>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <Q-ENV:Body>
                   <Q-ENV:Content-Type>text/xml</Q-ENV:Content-Type>
                   <Q-ENV:Message-Type></Q-ENV:Message-Type>
                   <Q-ENV:Encoding>UTF-8</Q-ENV:Encoding>
                   <Q-ENV:Message-Body>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Thanks for your replies in advance.
    Regards,
    Prashanth

    Hello,
    but they were not getting any response back from XI and the sending system kept resending the message.. may be it was acting like a HTTP post.
    The method that is used by the native SOAP Adapter is always HTTP Post. Not sure why you are not getting a response, have you checked the outbound firewall of the sending party or the inbound firewall of XI? To which SOAP URL are you sending to?
    Hope this helps,
    Mark

  • MAXIMUM SIZE OF DATA THAT CAN BE HANDELLED BY SOAP ADAPTER

    hi 2 all,
    Soap adapter is calling webservice through bpm.So i but its taking time to call the webservice.So i wanted to know,what is the maximum size of data that can be handelled by the adapter.

    There is no maximum size. It depends on your h/w configuration and also the consuming applications response times as well.
    Ideally a payload size of 5 - 10 MB provides the best performance.
    Regards
    Bhavesh
    PS: Please do not use Captials on the Internet.

  • Sender SOAP adapter: get soap header data

    Hi,
    I've been going through various posts and blogs here on SDN + looked in the how to guide for SOAP adapter, but still find it quite difficult to actually find out how to do it. I've tried to follow recommendations seen, but it doesn't add up.
    So can someone please tell me how to get an element situated in the SOAP header of the request sent to XI via sender soap adapter?
    Let's for instance say the request looks like this:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP-ENV:Header>
              <SSN>1234567890</SSN>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <event>
                   <elem1>data 1</elem1>
                   <elem2>data 2</elem2>
                   <elem3>data 3</elem3>
              </event>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    How can I get the data in the SSN-header element at mapping time?
    I'm sure this can be done by using adapter modules as the first step adapter, but I prefer doing it at mapping time if possible.
    Best Regards,
    Daniel

    I solved it on my own now. My missing link was the fact that I'm using XMLSPY to send request and thus need to replace all '&amp;' with & in Connection Endpoint.
    Message was edited by:
            Daniel Engsig-Karup

  • Connection issue between Data service(DQ) to PI through SOAP adapter.

    Hi Guys,
    We are trying to connect the data services(DQ) with SAP PI through SOAP adapter. I provided the wsdl file to data services team and they are trying to send messages to PI. Looks like the messages are showing successful in there system, but not showing up in PI system.
    I tried the same file using xmlspy and PI receiving the messages from XMLSPY. We are wondering whats going wrong?
    Any idea about this data services system? Is there any other better way to receive messages to PI apart from webservices?
    PS: Connection is working fine from PI to DQ thorugh SOAP adapter.
    Thanks
    Deepthi.

    >>>> We are trying to connect the data services(DQ) with SAP PI through SOAP adapter. I provided the wsdl file to data services team and they are trying to send messages to PI. Looks like the messages are showing successful in there system, but not showing up in PI system.
    You are using soap sender  adapter ... Hosting webservices and DQ team is able to access your webservice.  Also using XMLSPY you are able to see pi messages.
    If you are using advance adapter engine, Please check only in the RWB -> adapter engine.
    If you are not using AAE, check in both SXMB_MONI and RWB for the wide range... Something problem with filter query in your checking...
    Note  since XMLSPY testing goes through Pi and able to monitor means you dont need another webservice client tool. 
    Solution:
    use tcp monitor to monitor the soap message ... It is better option
    /people/stefan.grube/blog/2007/03/29/troubleshooting-soap-http-and-mail-adapter-scenarios-with-tcpgateway

  • How to save the Response message from SOAP adapter

    Dear Friends,
       I am sending the FIle details webserver.here sender is FILE adapter and receiver is SOAP adapter.
    FIle to SOAP working successfully, but I need response from SOAP.
    Sender QoS is BE, so the response is coming to XI, but in SXMB_MONI it is showing DO YOU WANT TO SAVE IT or DISPLAY IT.
    my requirement is response message is directly updated in XI system.
    For response Can I use BPM or which method I need to use.
    Please suggest me  how to do the resonse message(SOAP to FILE).
    Regards,
    Shalini Shah.

    Sender QoS is BE,
    File adapter does not support sync communication. Therefore the scenario won't work as it is.
    What are you planning to do with the response? If you want to process is further, then:
    1. One way without BPM would be use of adapter module.
    File - RFC - File without a BPM - Possible from SP 19.
    2. Or you may use BPM with Async Sync bridge
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    Regards,
    Prateek

  • Axis SOAP Adapter - Setting MIME headers for attachements (Handlers?)

    Hello,
    I need to know if/how it is possible to set the individual MIME headers of the parts making up a multipart/related SOAP message using only standard Axis Handlers e.g. "com.sap.aii.axis.xi.XI30DynamicConfigurationHandler" (as described in the Axis FAQ in Note 1039369).
    I know I can insert transport headers  using "com.sap.aii.axis.xi.XI30DynamicConfigurationHandler", but I can't see a way of setting a MIME header for, say, the first part (i.e. the SOAP part) or the second part (e.g. an attachement). Is this possible without writing your own Axis handler? The Axis FAQ, in "Advanced usage question 31" implies that you can set MIME Headers but only shows an example of setting the transport header.
    I am using the SOAP Adapter to send a message comprising and XML message (in the SOAP body) and a PDF document (as an attachement). The external company this is being sent to requires that we have specific values for the "Content-Id" MIME header in each part of the multipart/related document. This is why I need to understand if we can do this without writing our own Axis Handler.
    Incidentally, I have tried to write a custom Axis Handler but couldn't get PI to find it after deployment. I did this by inserting my JAR file in the "com.sap.aii.adapter.lib.sda" (as per Notes 1039369 / 1138877) and then using JSPM. After deployment, though, when I tried to start the SOAP Adapter I got the following error in the RWB: "failed to initialize: org.apache.axis.ConfigurationException: java.lang.ClassNotFoundException: com.hp.gerryaxis.GerryAxis..." (my class was called "GerryAxis" and I placed this in package "com.hp.gerryaxis"). I'm not an experienced Java programmer (my background is in ABAP), so if anyone can suggest whey I'm getting this error, I'd be very grateful (for example, could my choice of package be causing the problem?).
    Thanks for your help.

    I went ahead and wrote a simple bespoke Axis Handler. By invoking this from the standard "HandlerBean" in the module processor of my communication channel, I was able to overwrite and set new MIME headers in the Attachment Parts of my SOAP Message. I was also able to change the contents of the SOAP Envelope; for example, I found I could easily delete the SOAP Header. However, I've encountered a problem when I try and update the MIME headers of the SOAP Part i.e. the Part of the multipart/related message containing the SOAP Envelope.
    Does anyone know why I can't seem to change the MIME headers of the SOAP Part?
    The Axis API calls I used were as follows:
    (1) To update the MIME headers of attachements in my SOAP message:
    (a) Message = MessageContext.getCurrentMessage()
    (b) Iterator = Message.getAttachments()
    (c) AttachmentPart = Iterator.getNext()
    (d) AttachmentPart.setMimeHeader(name, value)
    This works.
    (2) To update the MIME headers of the SOAP (root) Part:
    (a) Message = MessageContext.getCurrentMessage()
    (b) SOAPPart = Message.getSOAPPart()
    (c) SOAPPart.setMimeHeader(name, value)
    This DOESN'Twork - the MIME headers of the SOAP Part never change.
    (3) To update the SOAP Envelope (delete the SOAP Header):
    (a) Message = MessageContext.getCurrentMessage()
    (b) SOAPPart = Message.getSOAPPart()
    (c) SOAPEnvelope = SOAPPart.getEnvelope()
    (d) SOAPHeader = SOAPEnvelope.getHeader()
    (e) SOAPHeader.removeContents()
    This works.
    I just don't understand why the call to SOAPPart.setMimeHeader() doens't work when I try and insert new MIME headers to the SOAP Part (e.g. "Content-Name") or when I try and change existing MIME headers there (e.g. "Content-ID"). I don't get any errors.
    The code of my handler is:
    @(#)GerryAxis.java       
    Set MIME headers in the SOAP and specified attachment part of a message
    package com.hp.handlers;
    import org.apache.axis.handlers.BasicHandler;
    import org.apache.axis.AxisFault;
    import org.apache.axis.attachments.AttachmentPart;
    import org.apache.axis.Message;
    import org.apache.axis.MessageContext;
    import java.util.Iterator;
    import javax.xml.soap.SOAPMessage;
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPHeader;
    import javax.xml.rpc.handler.soap.SOAPMessageContext;
    The <code>GerryAxis</code> handler class sets MIME headers.
    <p>
    This handler accepts the following parameters:
    <ul>
    <li><b>name</b>: Name of header
    <li><b>value</b>: Value for header
    <li><b>attachment</b>: Attachment number
    </ul>
    public class GerryAxis extends BasicHandler {
      /* (non-Javadoc)
    @see org.apache.axis.Handler#invoke(org.apache.axis.MessageContext)
      public void invoke(MessageContext msgContext) throws AxisFault {
        int i=0;
        boolean found = false;
        AttachmentPart ap = null;
        javax.xml.soap.SOAPPart sp = null;
        StringBuffer debug = new StringBuffer();
        try {
          // The MIME header change is controlled from the parameters "name", "value", "attachment" which  are
          // set in the module processor as parameters.
          String name  = (String)getOption("name");
          String value = (String)getOption("value");
          String attachment  = (String)getOption("attachment");
          Message msg = msgContext.getCurrentMessage();
          // Get the SOAP Part (the part holding the SOAP Envelope
          sp = msg.getSOAPPart();
          if (sp == null)
              debug.append("getSOAPPart returned <null> / ");
          // Set a MIME header in the SOAP Part - THIS DOES NOT WORK - WHY?     
          sp.setMimeHeader(name,value);
          // Remove the SOAP Header for the Envelope - this works fine
          SOAPEnvelope se = sp.getEnvelope();
          SOAPHeader sh = se.getHeader();
          sh.removeContents();
          // For debugging - writes some debuggin information to a "DEBUG" MIME header in the first Attachement Part
          debug.append("name = " + name +" / ");
          debug.append("value = " + value +" / ");
          debug.append("attachment = " + attachment + " / ");
          debug.append("getMimeHeader for SOAPPart returned " + sp.getMimeHeader(name)[0] + " / ");
          debug.append("getContentId for SOAPPart returned " + sp.getContentId() + " / ");
          // Update the specified attachement's MIME header - this works fine
          Iterator it = msg.getAttachments();
          while (it.hasNext()) {
            i++;
            ap = (AttachmentPart) it.next();
            if (i == new Integer(attachment).intValue()) {
              found = true;
              break;
          if (found) {
            ap.removeMimeHeader(name);
            ap.setMimeHeader("DEBUG",debug.toString());
            ap.setMimeHeader(name,value);
          msg.saveChanges();
        catch (Exception e) {
          throw AxisFault.makeFault(e);
    Thanks
    Edited by: Gerry Deighan on Oct 3, 2010 10:27 PM

  • How  Sender SOAP Adapter will retriew the data  to process further

    How  Sender SOAP Adapter will  receive the data  to send the integration server to process further

    Hi,
    1. All details are always taken from the Sender Agreement.
    For the Sender File adapter and the Sender SOAP adapter , the details that include are , Sender Service, Sender Interface Name and namespace and these are the details that make up the SOAP header when the message hits the integration Engine.
    Once the corresponding Adapter for the message is identified, ie. the Sender SOAP adapter , the message for the SOAP header is then taken from the Sender Agreement of that adapter. This is the exact reason why one Sender Adapter can be involved in one and only one Sender Agreement.
    Regards
    Bhavesh

  • Changing data structure in the receiver SOAP adapter

    I was wondering whether it is possible to have changing data structure in terms of one receiver SOAP adapter so I could sent data type 1 and 2 to a single XI web service enabled URL and make conditional parsing in terms of the received message ?
    I have a receiver SOAP adapter that ideally should be able to receive two different types of messages. But SOAP adapter is fixed to a sigle message interface that naturally has it's data structure set to just one type. I can just create conditions in terms of the data type 1 message that has been defined in the design side.
    Is it possible achieve this with just one SOAP receiver adapter?

    Henri,
    Please go through the note: 856597 (Quesiton NO 9)
    -Naveen.

  • Japanese Data Corruption in SOAP Response

    Hello,
    I'm in an environment where I need to pass Japanese data through a SOAP service using an Element. When I return
    the Element in response tor my SOAP request I'm receiving corrupted data in the XML. The XML data of the Element on
    the server side looks perfect. Does anyone have any suggestions what might be wrong?
    I'm using Oracle SOAP from iAS v1.0.2.2.
    My client code looks like this:
    Call call = new Call();
    call.setTargetObjectURI( serviceId );
    call.setMethodName( "select" );
    call.setEncodingStyleURI( Constants.NS_URI_LITERAL_XML );
    Vector params = new Vector();
    params.addElement( new Parameter( "max",
    int.class,
    new Integer( 50 ),
    Constants.NS_URI_SOAP_ENC ) );
    Any help would be greatly appreciated! Thanks!
    -ann

    Hello,
    Still no luck, but I did try to send the XML as a string. The results were greatly improved, but still not right. This
    client code looks like this:
    Locale.setDefault(new Locale("ja","JP"));
    Call call = new Call();
    call.setTargetObjectURI( serviceId );
    call.setMethodName( "select" );
    call.setEncodingStyleURI( Constants.NS_URI_SOAP_ENC );
    Vector params = new Vector();
    // Specify to return a maximum of 50 records
    params.addElement( new Parameter( "max",
    int.class,
    new Integer( 50 ),
    null ) );
    The resulting Japanese data has the correct characters, but includes extraneous ones as well.
    Can anyone help me with this?
    Thanks!
    -ann

Maybe you are looking for