Change element in soap header

hello,
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!--  Call Adapter
  -->
- <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
- <SOAP:Header>
- <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:mustUnderstand="1" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
  <SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
  <SAP:ProcessingMode>synchronous</SAP:ProcessingMode>
  <SAP:MessageId>79630070-BC27-11DC-BD4F-0017A4106568</SAP:MessageId>
  <SAP:TimeSent>2008-01-06T07:17:46Z</SAP:TimeSent>
i sent the message in HTTPS,
the problem is the target system can't get SOAP:mustUnderstand="1", the target system can get only SOAP:mustUnderstand="0"
how can i change  SOAP:mustUnderstand="1" to SOAP:mustUnderstand="0"
thanks,
Shelly

Hello,
My propousal is as follows:
Go to the involved comunication channel on the integration Builder and Select the option:
"Do not use SOAP Envelope"
Then create your own XSLT mapping program as bellow:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
     <!-- Call Adapter
-->
     <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SAP="http://sap.com/xi/XI/Message/30">
          <SOAP:Header>
               <SAP:Main xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" versionMajor="003" versionMinor="000" SOAP:MUSTUNDERSTAND="0" wsu:Id="wsuid-main-92ABE13F5C59AB7FE10000000A1551F7">
                    <SAP:MessageClass>ApplicationMessage</SAP:MessageClass>
                    <SAP:ProcessingMode>synchronous</SAP:ProcessingMode>
                    <SAP:MessageId>79630070-BC27-11DC-BD4F-0017A4106568</SAP:MessageId>
                    <SAP:TimeSent>2008-01-06T07:17:46Z</SAP:TimeSent>
     <SPECIFICMAPPINGPROGRAM/>
               </SAP:Main>
          </SOAP:Header>
     </SOAP:Envelope>
</xsl:stylesheet>
Import the archive and select it in the Interface Mapping.
Good luck!!

Similar Messages

  • How to change Data in SOAP Header

    Dear friends,
    We are facing a problem with IDOCs. We have a scenario where in we are sending IDOC from a logical system XXXCLNT040 to another one XYZCLNT004 using XI3.0 SP10.
    Now the problem is that we are simulating a situation wherein system XXXCLNT004 sends PORDCR1 idoc to XI and then XI send it to XYZCLTN004 which should return an acknowledgement to be sent to "just" XI and then to some third system not the original sender.
    Now, the problem is that we changed the mapping of the IDOC field SDNPRN to point to XI logicalsystem so that the receiver sees that message is sent from logical partner XI and not from XXXCLNT004 but when I check the idoc in we05 of the receiver side it still has partner XXXCLNT004 instead of XI and it seems that it takes it up from the SOAP message header data.
    Is there anyway we can manipulate this so that we can change/modify the sender logical partner information during runtime? or anyother suggestions.
    Thanks & Best Regards,
    Manish

    Hi Manish -
    You can't map the 6 sender and receiver control record fields (partner, port, and function) and have XI pick them up. See note 728792 for the fields that you can map. You can map them but they will be ignored even if you choose "Use control record values from payload". You need to use other methods. See note 792333 for the options.
    Also check out the document "How To Sample IDoc Scenarios within XI3.0" which is available in the How-To section for XI 3.0. This will give you a number of scenarios. Drink a lot of coffee before you read this document.
    This is definitely the most confusing part of XI IDoc processing so set aside some time to figure it out.

  • Set  SOAP header element while invoking WS thru ADF webservice Data control

    Experts,
    I am trying to invoke/call a webservice (using ADF web service data control ) which is expecting custom element in SOAP-Header. I want to know the steps needed to set SOAP-Header custom element when using ADF web service data control. SOAP-Header custom element will be string type, something like
    <soap:Header><element1>String</element1></soap:Header>
    Thank you,
    Ashish

    Hi,
    extend the SOAPProvider class
    import javax.xml.soap.SOAPEnvelope;
    import javax.xml.soap.SOAPException;
    import javax.xml.soap.SOAPMessage;
    import oracle.adf.model.adapter.AdapterException;
    import oracle.adfinternal.model.adapter.webservice.provider.soap.SOAPProvider;
    public class CustomSOAProvider extends SOAPProvider {
        public CustomSOAProvider() {
            super();
        //expose protected method to public
        public void handleRequest(SOAPMessage soapMessage) throws AdapterException {
            super.handleRequest(soapMessage);
        //Expose protetcted method to public
        public void handleResponse(SOAPMessage soapMessage) throws AdapterException {
            super.handleResponse(soapMessage);
        }And configure it in the DataControls.dcx file of your WS DC project
    <AdapterDataControl id="..."
    xmlns="http://xmlns.oracle.com/adfm/datacontrol">
    <Source>
    <definition xmlns="http://xmlns.oracle.com/adfm/adapter/webservice"
    name="..." version="1.0"
    provider="adf.sample.wsdc.CustomSOAProvider"
    wsdl="http://...">
    Frank

  • How to create SOAP Header elements using SAAJ??

    I am facing a problem when adding header elements under SOAP Header
    using SAAJ(api).
    I want to create a structure as following:
    I get a empty SOAP header obejct by writing code--> SOAPHeader header
    = envelope.getHeader();
    But not able to add SOAP header elements as specified in example
    below. I tried but its giving me error as
    "HeaderElements must be namespace qualified"
    CAN ANYBODY TELL ME THAT HOW TO ADD HEADER ELEMENTS USING SAAJ??
    <SOAP:Header>
    <AccountNumber>123</AccountNumber>
    <AuthorisationCode>test111</AuthorisationCode>
    <Source>abc</Source>
    <Market>01</Market>
    </SOAP:Header>

    I'm including this comment from some code I've just written after wrestling with this for hours (I've actually left it on another post as well). The upshot of it all is that you have to include a namespace URI when creating a header in SAAJ:
            NOTE: SOAP 1.1 requires that all header entries be namespace-qualified to
            namespace URI's.  The SAAJ 1.2 implementation requires a Name object with
            the namespace URI to make this happen even if the prefix used is already
            visible by being declared higher in the document (e.g. in the Envelope).
            However, the namespace URI is not present in the serialized header element
            as long as it was declared higher in the document.  In order to create a
            header element without a prefix (to conform to a web service definition
            that doesn't use a prefix in its headers, for example), leave the prefix
            null in the addHeaderElement() method. 
            For example, with a SOAPHeader 'hdr':
              //first create the name
              Name name = env.createName("my-local-name", null, "my-URI");
              //then create the header element
              SOAPHeaderElement he = hdr.addHeaderElement(name);
            This would result in an XML element that looked like this:
              <my-local-name xmlns="my-URI"/>
            This would allow SAAJ developers to create a header for a service that
            only expected a local name in its header elements (as many do!).  As long
            as the service doesn't choke on the attribute (validation!  evil!), this
            should work.
                                                        Rob Kemmer
                                                        01/12/2005
     

  • Consume web service in ABAP proxy with SOAP header

    Hi Thomas ,
    I am trying to consume web service in  ABAP . I have followed the procedure from one of your web blog <a href="/people/thomas.jung3/blog/2004/11/17/bsp-a-developers-journal-part-xiv--consuming-webservices-with-abap a Developer's Journal Part XIV - Consuming WebServices with ABAP</a> . (640 release).
    I need to pass SOAP header along with SOAP body. As you mentioned I have used if_wsprotocol_ws_header interface to pass header but it is still failing.
    Please see below code and please give some direction to fix the issue.
    1.Create ABAP proxy for WSDL (http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL). It has created structures only for SOAP body.
    2.Create Logical port
    3.Create following program to call proxy
    REPORT  zproxy.
    DATA: ref_stock TYPE REF TO zzco_stock_quotes_soap ,
          ws_header TYPE REF TO if_wsprotocol_ws_header,
          name TYPE string,
          namespace TYPE string.
    TRY.
        CREATE OBJECT ref_stock
      get WS_HEADER protocol
        ws_header ?= ref_stock->get_protocol('IF_WSPROTOCOL_WS_HEADER').
      set somehow header as iXML-DOM tree
        DATA: ixml TYPE REF TO if_ixml,
              xml_document TYPE REF TO if_ixml_document,
              xml_root TYPE REF TO if_ixml_element,
              xml_element TYPE REF TO if_ixml_element,
              xml_node TYPE REF TO if_ixml_node.
        DATA l_xstring        TYPE xstring.
        DATA l_string         TYPE string.
        FIELD-SYMBOLS <fs_xstring> TYPE xstring.
      Additional Header:
        CONCATENATE
    '<soap:Header>'
    '<s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">'
    '<s1:RegisteredUser>'
    '<s1:UserID>[email protected]</s1:UserID>'
    '<s1:Password>aaaaaaaa</s1:Password>'
    '</s1:RegisteredUser></s1:LicenseInfo>'
    '</soap:Header>' INTO l_string.
      convert to xstring
        l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
        IF NOT l_string IS INITIAL.
        create iXML DOM document from XML xstring
          CALL FUNCTION 'SDIXML_XML_TO_DOM'
            EXPORTING
              xml           = l_xstring
            IMPORTING
              document      = xml_document
            EXCEPTIONS
              invalid_input = 1
              OTHERS        = 2.
          IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
            xml_root = xml_document->get_root_element( ).
            xml_element ?= xml_root->get_first_child( ).
          add header element by element to SOAP header
            WHILE NOT xml_element IS INITIAL.
              name = xml_element->get_name( ).
              namespace = 'http://swanandmokashi.com' . "xml_element->get_namespace_uri( ).
              IF NOT xml_element IS INITIAL.
              ENDIF.
              ws_header->set_request_header(
                          name = name
                          namespace = namespace
                          dom = xml_element ).
              xml_element ?= xml_element->get_next( ).
            ENDWHILE.
          ENDIF.
        ENDIF.
      CATCH cx_ai_system_fault .
    ENDTRY.
    *Call soap body using abap proxy class.
    DATA: get_quotes TYPE zzget_quotes_soap_out .
    DATA: get_quotes1 TYPE zzget_quotes_soap_in .
    get_quotes1-quote_ticker = 'GE'.
    TRY.
        CALL METHOD ref_stock->get_stock_quotes
          EXPORTING
            get_quotes1 = get_quotes1
          IMPORTING
            get_quotes  = get_quotes.
      CATCH cx_ai_system_fault .
      CATCH cx_ai_application_fault .
    ENDTRY.
    4.It is throwing cx_ai_system_fault error.
    SOAP details:
    Input:
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:enc="http://schemas.xmlsoap.org/soap/encoding" >
    <soap:Header>
    <s1:LicenseInfo xmlns:s1="http://ws.strikeiron.com">
    <s1:RegisteredUser>
    <s1:UserID>[email protected]</s1:UserID>
    <s1:Password>aaaaaaaa</s1:Password>
    </s1:RegisteredUser>
    </s1:LicenseInfo>
    </soap:Header>
    <soap:Body>
    <tns:GetQuotes xmlns:tns="http://swanandmokashi.com">
    <tns:QuoteTicker>GE</tns:QuoteTicker>
    </tns:GetQuotes>
    </soap:Body>
    </soap:Envelope>
    Thanks,
    Kavitha.

    Hi ,
    Thank you for the response. Did you passed user email and password ([email protected] /aaaaaaaa) part of licenseinfo->resisteredUser along with Quoteticker GE in analyzer?
    <a href="http://www.strikeiron.com/Analyzer/OnlineAnalyzer.aspx?WSDL=http://ws.strikeiron.com/SwanandMokashi/StockQuotes?WSDL">ANALYZER</a>
    Thanks,
    Kavitha.

  • Split-Join, unable to set SOAP:HEADER in OSB at Invoke Service Component.

    Hi Experts,
        i created a Split-join for parallel processing and invoke third party services, but this service requires some mandatory elements in soap:header like WS-Addressing and, WSA-TO and some security infomation, but i don't know  how to pass header in invoke service step. Please help me to setup Header for Invoke services in split join.
    Please help me to resolve this issue.
    Thanks
    Ankit

    see this :https://forums.oracle.com/thread/951618
    not the most fancy way, but you can create some sort of  wrapper proxyservice in front of your business service to make it work

  • Consume web service in ABAP with SOAP header

    I'm trying to call a SalesForce Web Service from ABAP.
    After the login I use the WS_HEADER to pass header information.
      TRY.
    Additional Header:
          CONCATENATE
          '<soap:Header>'
          '<s1:SessionHeader>'
          '<s1:sessionId>' login_output-result-session_id '</s1:sessionId>'
          '</s1:SessionHeader>'
          '</soap:Header>' INTO l_string.
    convert to xstring
          l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
          ws_header ?= obj_add->get_protocol('IF_WSPROTOCOL_WS_HEADER').
          IF NOT l_string IS INITIAL.
    create iXML DOM document from XML xstring
            CALL FUNCTION 'SDIXML_XML_TO_DOM'
              EXPORTING
                xml           = l_xstring
              IMPORTING
                document      = xml_document
              EXCEPTIONS
                invalid_input = 1
                OTHERS        = 2.
            IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
              xml_root = xml_document->get_root_element( ).
              xml_element ?= xml_root->get_first_child( ).
    add header element by element to SOAP header
              WHILE NOT xml_element IS INITIAL.
                name = xml_element->get_name( ).
                namespace = xml_element->get_namespace_uri( ).
                namespace = 'urn:partner.soap.sforce.com'."xml_element->get_namespace_uri( ).
                IF NOT xml_element IS INITIAL.
                ENDIF.
    get WS_HEADER protocol
                ws_header->set_request_header(
                name = name
                namespace = namespace
                dom = xml_element ).
                xml_element ?= xml_element->get_next( ).
              ENDWHILE.
            ENDIF.
          ENDIF.
        CATCH cx_ai_system_fault .
      ENDTRY.
    I get the following exception: CX_SXML_PARSE_ERROR
    I guess the error has to do with the wrong description of the additional header.
    In soapUI the header looks like that:
       <soapenv:Header>
          <urn:SessionHeader>
             <urn:sessionId>1234567890</urn:sessionId>
          </urn:SessionHeader>
       </soapenv:Header>
    Is there somebody who knows how I should "translate" this to ABAP?
    Thanks,
    Daniel

    Hi Jelena
    Thanks for your answer.
    I've already created the proxy.
    The question is how or where I get the correct format for the header of this string in ABAP:
    CONCATENATE
    '<soap:Header>'
    '<s1:SessionHeader>'
    '<s1:sessionId>' login_output-result-session_id '</s1:sessionId>'
    '</s1:SessionHeader>'
    '</soap:Header>' INTO l_string.
    This example is wrong. I get the following error: CX_SXML_PARSE_ERROR
    As I mentioned before in soapUI the header looks like that:
    <soapenv:Header>
    <urn:SessionHeader>
    <urn:sessionId>1234567890</urn:sessionId>
    </urn:SessionHeader>
    </soapenv:Header>
    Daniel

  • Jdev web service and SOAP header

    Hello,
    How can I implement a web service in jdev that extracts some elements from the SOAP header ?
    How can I implement a web service proxy in jdev so that it inserts elements in SOAP header?
    Thank you.
    The operation WSDL looks approx like this:
              <operation name="SoapDDXML">
                   <soap:operation soapAction="someaction"/>
                   <input>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="psXML"/>
                   </input>
                   <output>
    <soap:Header>
    <OurCredentials xmlns="ns">
    <UserName>string</UserName>
    <Password>string</Password>
    </OurCredentials>
    </soap:Header>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="Result"/>
                   </output>
              </operation>

    Hello,
    When using OracleAS/JDeveloper 10.1.3.x you are creating Web Service using the standard JAX-RPC API. This API uses the SOAP with Attachments API for Java (SAAJ) to manipulate SOAP messages.
    When dealing with SOAP Header, it is common usage to use the notion of "handler" to set/read header from the messages.
    The chapter "Using JAX-RPC Handler" is a good point to start to see how do deal with this requirement,
    When manipulating the header in the handler, the code will look like:
    SOAPHeader header = message.getSOAPHeader();
    Name headerName = soapFactory.createName("OurCredentials", "ns", "http://schemas.xmlsoap.org/soap/encoding/");
    .. // add sub element
    SOAPHeaderElement headerElement = header.addHeaderElement(headerName);also..
    Could you specify the version of JDeveloper and the type of Web Service that you are using when ascking a question on the forum it help community member to provide a better answer.
    Regards
    Tugdual Grall

  • To populate SOAP Header

    Hi,
      We have a scenario proxy -> XI -> SOAP. In the receiver side we need to populate the soap header in the following format.
    <SOAP:Envelope>
    <SOAP:Header>
    <CustomTag1>fddgg</CustomTag1>
    <CustomTag2>uduh</CustomTag2>
    <CustomeTag3>yyyy</CustomTag3>
    <CustomTag4>ZZZZ</CustomTag4>
    </SOAP:Header>
    <SOAP:Body>
    ....Some data ...
    </SOAP:Body>
    </SOAP:Envelope>
        How can we achieve this in the receiver SOAP adapter. Can we achive this by ASMA.Thanks for all the inputs.
    Thanks And Regards
    Sripathi

    Hi Udo,
      When i imported my WSDL to external defnitions,all the methods got moved to my external defnitions. The problem
    i am facing now is i don't see the SOAP header elements( When i move one of this method) in my mapping objects to
    map the header elements.
    <SOAP:Header>
    <CustomTag1>fddgg</CustomTag1>
    <CustomTag2>uduh</CustomTag2>
    <CustomTag3>YYYY</CustomTag3>
    <CustomTag1>ZZZZ</CustomTag1>
    </SOAP:Header>
       Do you want us to create this data strucute mannually in the required format or is there any way in which i can access the header elements. Thanks for the input.
    Thanks And Regards
    Sripathi G Yogesh

  • Create/access SOAP header

    Hello,
    How can I implement a web service in jdev that extracts some elements from the SOAP header ?
    How can I implement a web service proxy in jdev so that it inserts elements in SOAP header?
    Thank you.
    The operation WSDL looks approx like this:
              <operation name="SoapDDXML">
                   <soap:operation soapAction="someaction"/>
                   <input>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="psXML"/>
                   </input>
                   <output>
    <soap:Header>
    <OurCredentials xmlns="ns">
    <UserName>string</UserName>
    <Password>string</Password>
    </OurCredentials>
    </soap:Header>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="Result"/>
                   </output>
              </operation>

    Also facing the same problem - has anyone found an answer?
    Thanks,

  • SOAP RECEIVER: Possible to change the soap header request

    Hi
    Is it possible to change what is included in the soap header like namespaces (.. xmlns:ns="http://what.com"
    Specifically I need to have the "http://Strange.org/thisis.xsd" (see below) included in the header and the <ns:pi-create> included in SOAP-ENV
    <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"
    xmlns:ns="http://Strange.org/thisis.xsd">
    <SOAP-ENV:Body>
    <ns:pi-create>
    <request>
    <request-data>...
    </request-data>
    </request>
    </ns:pi-create>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Hope somebody can help
    Cheers

    Hi Bowie,
    1.You can change the Namespace. condition is no obj's under the namesapce then only it's possible otherwise u can't.
    2.create a new namesapce what ever u want and copy all the obj's under that namesapce.finally delete the previous one.
    XMLAnonymizerBean
    Use
    You use this module to anonymize XML elements and attributes by removing namespaces or namespace prefixes from the XML document of the main payload.
    You can define a particular namespace prefix for each namespace. You can also change the encoding attribute of the XML declaration.
    Integration
    You can use the module in adapters that can be extended in the module processor.
    Activities
    Entries in the Processing Sequence
    ●      Insert the module before the adapter module.
    If the adapter comprises multiple modules, for information about the position of the module, see: Extending the Module Chain in the Module Processor
    ●      Enter the module name AF_Modules/XMLAnonymizerBean.
    ●      Select the Module Type Local Enterprise Bean.
    ●      The system proposes a module key.
    Entries in the Module Configuration
    ●      anonymizer.acceptNamespaces
    Enter a list of namespaces and their prefixes that are to be kept in the XML document as follows: namespace1 n1 namespace2 n2 u2026
    To enter a namespace without a prefix, enter '' (two single quotation marks).
    Any namespaces you do not specify are removed from the XML document.
    ●      anonymizer.quote
    Specify the character to be used to enclose the attribute values.
    The default value is '. The parameter is optional.
    ●      anonymizer.encoding
    To use a code page other than UTF-8, enter it.  The parameter is optional.
    For example, enter ISO-8859-1.
    Example
    The anonymizer.acceptNamespaces parameter has the following value:
    urn:sap-com:document:sap:rfc:functions rfc urn:sap-com:document:sap:soap:functions:mc-style rfc
    ●      Payload before using the XMLAnonymizerBean:
    <Z_PAYMITEM_GET_LIST
      xmlns="urn:sap-com:document:sap:rfc:functions"
      xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <I_ACCOUNTIDENT xmlns="">
        <ACCOUNT_NUMBER>0080000094</ACCOUNT_NUMBER>
        <BANK_COUNTRY>DE</BANK_COUNTRY>
        <BANK_COUNTRY_ISO>DE</BANK_COUNTRY_ISO>
      </I_ACCOUNTIDENT>
    </Z_PAYMITEM_GET_LIST>
    ●      Payload after using the XMLAnonymizerBean:
    <?xml version='1.0' encoding='utf-8'?>
    <rfc:Z_PAYMITEM_GET_LIST
      xmlns:rfc='urn:sap-com:document:sap:rfc:functions'>
      <I_ACCOUNTIDENT>
        <ACCOUNT_NUMBER>0080000094</ACCOUNT_NUMBER>
        <BANK_COUNTRY>DE</BANK_COUNTRY>
        <BANK_COUNTRY_ISO>DE</BANK_COUNTRY_ISO>
      </I_ACCOUNTIDENT>
    </rfc:Z_PAYMITEM_GET_LIST>
    with rgds,
    MFH

  • Remove SOAP Header Element from ALSB Proxy Service Response

    I've got a client of one of my ALSB Proxy services that needs the SOAP header element removed from the response. I'm struggling to find a way to do that with a WSDL-based proxy service. Do I need to change my service to an Any XML Service or is there an easier way?

    At the same time, could you please also tell me how do i convert a XML Response from a business service to a SOAP Response in Proxy Service.
    My client is expecting a soap response and the backend gives back only the XML Response
    Thanks in advance!!
    ~Swagat

  • How to add a custom element to a SOAP Header in c#

    I am new to SOAP and web-services, and not an expert on c# either so sorry if I have made an infuriatingly simple error.
    I am calling several web-services and I now need to add an element called *pcimask* to the SoapHeader in order to get a response that is PCI Compliant.
    The web-services/WSDL don't expose this property so I guess I need to add it at runtime.
    My application creates SOAP messages like the below: (the Soap Request and Response are output into a text file by a SOAP Logging class)
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
    <AutHeader xmlns="http://edb.com/ws/WSCommon_v21">
    <SourceApplication>myApp</SourceApplication>
    <DestinationApplication>theirApp</DestinationApplication>
    <Function>CardCreate</Function>
    <Version>3.0.0</Version>
    <ClientContext>
    <userid>myID</userid>
    <credentials>SecureToken</credentials>
    <channel>NBA</channel>
    <orgid>123456</orgid>
    <orgunit>654321</orgunit>
    <customerid />
    <locale xsi:nil="true" />
    <ip>123.456.789.012</ip>
    </ClientContext>
    </AutHeader>
    </soap:Header>
    As I understand it, I need to add an element `pcimask="true` to the
    <ClientContext element, and it must be after the <ip>
    However the wsdl doesn't expose this as a property.
    So I have looked at the below resources:
     Bytes.com - how-add-soap-header-soap-message
     Stackoverflow: (18980689) adding-custom-soapheader-in-c-sharp-for-a-web-service-call
     Stackoverflow: (4035423) add-child-elements-to-custom-soap-header-in-spring-ws
    and I came up with a little class inside my `common.cs` as below:
    using System.Web.Services.Protocols;
    using System.Xml.Serialization;
    namespace EvryCardManagement
    [XmlRoot(Namespace = "http://edb.com/ws/WSCommon_v21")]
    [SoapHeader("EDBHeaderType", Direction = SoapHeaderDirection.In)]
    public class CardCreateEx : SoapHeader
    public string Value;
    public CardCreateEx pcimask;
    public static class Common
    public static bool closeMe { get; set; }
    public static int iMQRowID;
    public static string impNme;
    public static string impPwd;
    and I wanted to try and use it in my code that creates the SoapHeader as below:
    private EDBHeaderType wsSoapHeader()
    EDBHeaderType wsSoapHeader = new EDBHeaderType();
    /* ClientContext */
    ClientContextType clientContext = new ClientContextType();
    clientContext.userid = edb_service[0].userid;
    clientContext.credentials = Common.SOToken;
    //clientContext.pc
    clientContext.orgid = edb_service[0].orgid;
    clientContext.orgunit = edb_service[0].orgunit;
    clientContext.customerid = "";
    clientContext.channel = edb_service[0].channel;
    clientContext.ip = edb_service[0].ip;
    /* PCI MASK added to ClientContext in header; P-02925; Jan 2015 */
    CardCreateEx cardCreateExt = new CardCreateEx(); // P-02925; Jan 2015
    cardCreateExt.Value = "true";
    /* EDBHeader */
    wsSoapHeader.SourceApplication = edb_service[0].SourceApplication;
    wsSoapHeader.DestinationApplication = edb_service[0].DestinationApplication;
    wsSoapHeader.Function = edb_service[0].Function;
    wsSoapHeader.Version = edb_service[0].Version; // P-02925; Oct-Nov 2014
    wsSoapHeader.ClientContext = clientContext;
    return wsSoapHeader;
    but I get a build error:
        Attribute 'SoapHeader' is not valid on this declaration type. It is only valid on 'method' declarations.
    so what is the correct way to do this?

    Hi,
    >>Attribute 'SoapHeader' is not valid on this declaration type. It is only valid on 'method' declarations.
    Base on this situation, just as the error message says, the 'SoapHeader' attribute can only use on method, such as:
    [SoapHeader("myHeader", rection=SoapHeaderDirection.InOut)]
    //Receive any SOAP headers other than MyHeader.
    [SoapHeader("unknownHeaders",Required=false)]
    public string MyWebMethod() {
    return "Hello";
    For mire information:
    http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapheader(v=vs.110).aspx
    Besides, about Defining and Processing SOAP Headers:
    http://msdn.microsoft.com/en-us/library/77hkfhh8(v=vs.71).aspx
    http://stackoverflow.com/questions/18980689/adding-custom-soapheader-in-c-sharp-for-a-web-service-call
    Regards

  • Unable to process SOAP Header child element 'wsse:Security' with 'mustUnder

    Hello everyone.
    In have created project in Jdeveloper. In this one i have one external reference for Siebel Service.
    At composite, for external reference service(Siebel Service) i have added a security policy i.e. *"oracle_wss_username_token_client_policy"*.
    [Right click on SiebelService->configure WS policies->under security tab i have selected above policy]
    So apart from this i have added property for the policy
    <property name="oracle.webservices.auth.username" type="xs:string"
    many="false" override="may">SADMIN</property>
    <property name="oracle.webservices.auth.password" type="xs:string"
    many="false" override="may">SADMIN</property>
    But its returning following error,
    Unable to process SOAP Header child element 'wsse:Security' with 'mustUnderstand="1"'(SBL-EAI-08000)
    This really pushed back me in development.
    Really i am in need of help. Help me out of this issue.
    Thanks in advance,
    Shridhar

    Unable to process SOAP Header child element 'wsse:Security' with 'mustUnderstand="1"'(SBL-EAI-08000)The problem is at Siebel side. It is not able to understand the security mechanism being used at SOA side. There are two options -
    1. Use the custom policy and assertion at SOA side (please refer to metalink note - 1419373.1)
    2. Write your own custom message handler class and use it at Siebel side to negotiate security gap
    Regards,
    Anuj

  • WS-Security SOAP Header does not include expected elements

    Our SAP R/3 Enterprise is sending messages to XI which then forwards them to third party applications withing our corporate firewall.
    One of these applications (Java) provides a Web Service  to which we are attempting to direct a message from XI.
    This Web Service requires WS-Security information be included in the SOAP header identifying Username, Password as described by the Oasis standards.
    <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
          soapenv:mustUnderstand="1">
          <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
            wsu:Id="UsernameToken-21280292">
            <wsse:Username>test</wsse:Username>
            <wsse:Password
              Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"
              >Zzqxojj3iKMfki45et4ZWqrAupQ=</wsse:Password>
            <wsse:Nonce>b6QiDyhP3Ds9z24NMI0r6w==</wsse:Nonce>
            <wsu:Created>2007-01-04T16:57:48.625Z</wsu:Created>
          </wsse:UsernameToken>
        </wsse:Security>
      </soapenv:Header>
    I have gone through a lot of documentation provided by SAP and SDN in an attempt to determine how and what to configure in order to generate the above SOAP header and although I am fairly sure SAP XI can perform this function I am at a loss on what needs to be done.
    Their are plenty of documents describing how to do this for a Web Service generated by an SAP (WAS, R/3, XI, etc) but other than references to doing so for a third party application nothing that is concrete. Yet I am fairly certain that it is a simple process.
    In one article of SAP Insider I found reference to this email address and am hoping that you will be able to assist.
    Our XI is currently running WAS Netweaver 04 (640) patched at SAPKB64017.

    Chris--
    OASIS WS-Security 1.0 has been supported by the XI SOAP adapter for a long time.
    However, what you're trying to do isn't possible in XI yet, because it isn't pure WS-Security.
    WS-Security provides definition for the wsse:UsernameToken element, but provides little in the way of content.  The standard allows for //wsse:UsernameToken/Username, and for //wsse:UsernameToken/<xsd:any> to support extensibility.  WS-Security does not define the existence of wsse:Password, wsse:Nonce, wsse:Created, etc.
    OASIS released a separate standard at the same time as WS-Security 1.0 to define a set of extensions for the wsse:UsernameToken element.  This standard includes //wsse:UsernameToken/Password and your other elements.  So, you need an application that has implemented WS-Security 1.0 as well as the "Web Services Security UsernameToken Profile 1.0" standard.
    XI does not appear to support this standard extension, so customers are frequently doing a custom implementation in order to implement the features they need from the UsernameToken Profile standard.  I've seen a customer do it in the plain HTTP adapter and use XSLT in the message mapping for receiver cases. 
    I've yet to see a sender case.  Adapter modules in the SOAP adapter might work, but I see this as a technical risk because I don't know if you can re-authenticate from within the adapter module, and I suspect that XI applies the business-service authorization rule (the user authorization to access that particular service) before the adapter modules are called.
    --Dan King
    Manager, SAP NetWeaver Integration
    Capgemini

Maybe you are looking for