Base64 encoding in SOAP adapter

Hi,
Is it possible to transform outgoing messages to Base64 encoding format in XI using module processors and security encryption? I'm using receiver SOAP adapter (without SOAP header) and using PayloadZipBean module processor to zip the outgoing message. Also I need to add digital signature and base64 encryption to the zipped message. Please let me know how this can be achieved.
Thanks,
Dipankar

hi dipankar
check the below blog
How to use Digital Certificates for Signing & Encrypting Messages in XI                         
How to use Digital Certificates for Signing & Encrypting Messages in XI     
hope this resolves your issue
additionally check this
How to use Client Authentication with SOAP Adapter                              
How to use Client Authentication with SOAP Adapter     
also
How XML Encryption can be done using web services security in SAP NetWeaver XI                                        
How XML Encryption can be done using web services security in SAP NetWeaver XI                                        
reward points if helpfull
regards
kummari
Edited by: kummari on Jul 19, 2008 7:24 AM

Similar Messages

  • Encoding Sender Soap Adapter

    Hi guys,
    we have a synchronous scenario Webservice (exposed in PI) <-> PI <-> RFC. The problem ara with characters like è or ç that doesn't appear correctly with UTF-8. I have read some threads, and I think the encoding can't be changed in a SOAP Sender, only in the Receiver.
    In R/3 the text is appearing like 'Econòmic' and we are logging in the RFC channel in the suitable language.
    Do you know where we could do the change of the encoding? Is it possible in the message mapping?
    Thanks & Regards,
    Xavier.

    Hi Iñaki,
    I tested with SoapUi and UTF-8 encodinf. In PI looks the same with the strange character, but in R/3 the text is now correct.
    I am going to talk to the team who consumes the Web Service, because something must be wrong.
    Thanks & Regards,
    Xavier.

  • Soap adapter default encoding

    Hi there,
    we have a XI <-> webservice scenario, where the XML messages are sent in a string (the wsdl is wrapped, literal) with digital signing.
    As of now, we have a problem in the digital signing, since the webservice won't validate the signature. We made some tests and this is what I've concluded.
    From what I've observed, there are three ways of sending XML file content in a string (let me know if there are more). They are:
    1. putting the xml content between "<![CDATA[" and "]]>";
    2. replacing '<', '>' and '"' with "&lt;", "&gt;" and "&quot;";
    3. replacing '<' and '>' with "&#60;" and "&#62;".
    2 and 3 appear to be different encodings.
    We tried to send three messages to a test webservice, each with a different way of defining the string, using receiver soap adapter. This test webservice was located in a local machine and we ran a sniffer on it. The three incoming messages were logged by the sniffer, but the upseting news were that the three of them had the same encoding in the input string, which was the third one above ("&#60;" and "&#62;", which by the way is the default by UTF-8).
    This only occurs when using SOAP adapter. I tested File adapter and it sent the file exactly how delivered by the sender service (meaning, with the different encodes or with CDATA). We even thought about using module processor for replacing the characters in the message, but since any custom module processor comes before the main adapter module processor, it won't have any effect on the final message.
    Using XMLSpy, I sent some test messages to our digital signer (which is also a webservice) with the three ways and it returned a different output when using "&lt;" encoding in the input. Then, I sent this signed message to the webservice and it validated the signature!
    We are suspecting that the webserver (which is IBM's WebSphere) always converts the input string to "&lt;", and when they calculate the message hash code, it's different from what we sent (since we always sign a "&#60;" encoded message).
    My question is: is there any way of changing the default encode that the soap adapter module processor uses? Or at least of making it not changing the encode of the payload? If it were possible, we would send the message to the signer webservice with "&lt;" encoding and the problem would be solved.
    Thanks in advance,
    Henrique.

    Morten,
    actually, we've found out that &#60; = &lt; , in both UTF-8 and ISO-8859-1 encodings. It makes no difference if you use one or the other.
    The point which was troublesome for us were the special characters (like á,â,à,ã,é, etc) which have different encoding for UTF-8 and ISO-8859-1. Since we had identified that the service we were accessing wasn't able to identify these characters properly, we just removed them from the string fields and that worked out for us.
    Hope it helps you out.
    Regards,
    Henrique.

  • Support on 'Base64 encoding in XML gateway Web service SOAP content'

    Hi Experts,
    IHAC who's requirement is as follows:
    They are currently using Web service protocol to send order information from Oracle Applications to their trading partner.
    But need to encode the payload in base64 encoding in the SOAP request.
    Further details:
    =====================================================================
    Current SOAP request is,
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bac="http://backend.ws.gtas.gridnode.com">
    <soapenv:Header/>
    <soapenv:Body>
    <bac:backendImport4>
    <bac:username>?</bac:username>
    <bac:password>?</bac:password>
    <bac:recipient>?</bac:recipient>
    <bac:contentFileName>?</bac:contentFileName>
    <bac:content>
    <EMPLOYEE>
    <EMPLOYEE_DATA>
    <EMAIL_ADDRESS/>
    <EMPLOYEE_ID>81</EMPLOYEE_ID>
    <EMPLOYEE_NUM>2</EMPLOYEE_NUM>
    <FIRST_NAME/>
    <FULL_NAME>Eddi.S,</FULL_NAME>
    <LAST_NAME>Eddi.S</LAST_NAME>
    <MIDDLE_NAME/>
    </EMPLOYEE_DATA>
    </EMPLOYEE>
    </bac:content>
    <bac:docType>?</bac:docType>
    </bac:backendImport4>
    </soapenv:Body>
    </soapenv:Envelope>
    Required SOAP request with base64 encoding is:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bac="http://backend.ws.gtas.gridnode.com">
    <soapenv:Header/>
    <soapenv:Body>
    <bac:backendImport4>
    <bac:username>?</bac:username>
    <bac:password>?</bac:password>
    <bac:recipient>?</bac:recipient>
    <bac:contentFileName>?</bac:contentFileName>
    <bac:content>
    PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9J25vJz8+DQo8IURPQ1RZUEUgRU1QTE9ZRUU+DQo8IS0tIE9yYWNsZSBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSBHYXRld2F5IFNlcnZlciAgLS0+DQo8RU1QTE9ZRUU+DQogIDxFTVBMT1lFRV9EQVRBPg0KICAgIDxFTUFJTF9BRERSRVNTLz4NCiAgICA8RU1QTE9ZRUVfSUQ+ODE8L0VNUExPWUVFX0lEPg0KICAgIDxFTVBMT1lFRV9OVU0+MjwvRU1QTE9ZRUVfTlVNPg0KICAgIDxGSVJTVF9OQU1FLz4NCiAgICA8RlVMTF9OQU1FPkVkZGkuUyw8L0ZVTExfTkFNRT4NCiAgICA8TEFTVF9OQU1FPkVkZGkuUzwvTEFTVF9OQU1FPg0KICAgIDxNSURETEVfTkFNRS8+DQogIDwvRU1QTE9ZRUVfREFUQT4NCjwvRU1QTE9ZRUU+DQo=
    </bac:content>
    <bac:docType>?</bac:docType>
    </bac:backendImport4>
    </soapenv:Body>
    </soapenv:Envelope>
    The issue in question is the content within the element <bac:content>.
    Base64 encoding of the payload
    <EMPLOYEE>
    <EMPLOYEE_DATA>
    <EMAIL_ADDRESS/>
    <EMPLOYEE_ID>81</EMPLOYEE_ID>
    <EMPLOYEE_NUM>2</EMPLOYEE_NUM>
    <FIRST_NAME/>
    <FULL_NAME>Eddi.S,</FULL_NAME>
    <LAST_NAME>Eddi.S</LAST_NAME>
    <MIDDLE_NAME/>
    </EMPLOYEE_DATA>
    </EMPLOYEE>
    is
    PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9J25vJz8+DQo8IURPQ1RZUEUgRU1QTE9ZRUU+DQo8IS0tIE9yYWNsZSBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSBHYXRld2F5IFNlcnZlciAgLS0+DQo8RU1QTE9ZRUU+DQogIDxFTVBMT1lFRV9EQVRBPg0KICAgIDxFTUFJTF9BRERSRVNTLz4NCiAgICA8RU1QTE9ZRUVfSUQ+ODE8L0VNUExPWUVFX0lEPg0KICAgIDxFTVBMT1lFRV9OVU0+MjwvRU1QTE9ZRUVfTlVNPg0KICAgIDxGSVJTVF9OQU1FLz4NCiAgICA8RlVMTF9OQU1FPkVkZGkuUyw8L0ZVTExfTkFNRT4NCiAgICA8TEFTVF9OQU1FPkVkZGkuUzwvTEFTVF9OQU1FPg0KICAgIDxNSURETEVfTkFNRS8+DQogIDwvRU1QTE9ZRUVfREFUQT4NCjwvRU1QTE9ZRUU+DQo=
    ========================================================================
    Is there a way in XML gateway to encode the payload automatically to base64 encoding so that it can accommodate the unicode
    Is there any way to encode the order information from EBS tables to base64 format in the outbound SOAP request ? Is this supported . If yes, how.?
    Does this involve customization. Is it possible to use encoder/decoder provided in sites such as XSL on top of XML : http://gandhimukul.tripod.com/xslt/base64-xslt.html
    Basically, They are trying to use XML Gateway to send and receive messages to a Trading Partner via SOAP. The issues is
    1. Outbound: The TP web service can only receive xml content that is encoded in base 64 binary format. How do we configure to encode content using base64
    2. Inbound: They want to receive messages using the SOAP architecture into XML gateway.
    Please let us know if you have any detailed configuration document for this purpose. Please advise and share relevant details.
    regards,
    Ajith

    Hi Gurvinder,
    Thanks for looking into this. Just to clarify again.
    example XML content:
    <?xml version="1.0" encoding="UTF-8" standalone='no'?>
    <!DOCTYPE EMPLOYEE>
    <!-- Oracle eXtensible Markup Language Gateway Server -->
    <EMPLOYEE>
    <EMPLOYEE_DATA>
    <EMAIL_ADDRESS/>
    <EMPLOYEE_ID>81</EMPLOYEE_ID>
    <EMPLOYEE_NUM>2</EMPLOYEE_NUM>
    <FIRST_NAME/>
    <FULL_NAME>Eddi.S,</FULL_NAME>
    <LAST_NAME>Eddi.S</LAST_NAME>
    <MIDDLE_NAME/>
    </EMPLOYEE_DATA>
    </EMPLOYEE>
    Sample Soap message that needs to be sent to our service provider is as follows
    <?xml version="1.0" encoding="UTF-8" ?>
    - <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
    - <soapenv:Body>
    - <ns5:backendImport5 xmlns:ns5="http://backend.ws.gtas.gridnode.com">
    <ns5:username>admin</ns5:username>
    <ns5:password>admin1</ns5:password>
    <ns5:recipient>GT424</ns5:recipient>
    <ns5:contentFileName>cabotTest.xml</ns5:contentFileName>
    <ns5:content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9J25vJz8+DQo8IURPQ1RZUEUgRU1QTE9ZRUU+DQo8IS0tIE9yYWNsZSBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSBHYXRld2F5IFNlcnZlciAgLS0+DQo8RU1QTE9ZRUU+DQogIDxFTVBMT1lFRV9EQVRBPg0KICAgIDxFTUFJTF9BRERSRVNTLz4NCiAgICA8RU1QTE9ZRUVfSUQ+ODE8L0VNUExPWUVFX0lEPg0KICAgIDxFTVBMT1lFRV9OVU0+MjwvRU1QTE9ZRUVfTlVNPg0KICAgIDxGSVJTVF9OQU1FLz4NCiAgICA8RlVMTF9OQU1FPkVkZGkuUyw8L0ZVTExfTkFNRT4NCiAgICA8TEFTVF9OQU1FPkVkZGkuUzwvTEFTVF9OQU1FPg0KICAgIDxNSURETEVfTkFNRS8+DQogIDwvRU1QTE9ZRUVfREFUQT4NCjwvRU1QTE9ZRUU+DQo=</ns5:content>
    <ns5:docType>3C3RN</ns5:docType>
    </ns5:backendImport5>
    </soapenv:Body>
    </soapenv:Envelope>
    . The xml content provided need to be encoded as base 64 encoding. The following is the equivalent of above xml content.
    <ns5:content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9J25vJz8+DQo8IURPQ1RZUEUgRU1QTE9ZRUU+DQo8IS0tIE9yYWNsZSBlWHRlbnNpYmxlIE1hcmt1cCBMYW5ndWFnZSBHYXRld2F5IFNlcnZlciAgLS0+DQo8RU1QTE9ZRUU+DQogIDxFTVBMT1lFRV9EQVRBPg0KICAgIDxFTUFJTF9BRERSRVNTLz4NCiAgICA8RU1QTE9ZRUVfSUQ+ODE8L0VNUExPWUVFX0lEPg0KICAgIDxFTVBMT1lFRV9OVU0+MjwvRU1QTE9ZRUVfTlVNPg0KICAgIDxGSVJTVF9OQU1FLz4NCiAgICA8RlVMTF9OQU1FPkVkZGkuUyw8L0ZVTExfTkFNRT4NCiAgICA8TEFTVF9OQU1FPkVkZGkuUzwvTEFTVF9OQU1FPg0KICAgIDxNSURETEVfTkFNRS8+DQogIDwvRU1QTE9ZRUVfREFUQT4NCjwvRU1QTE9ZRUU+DQo=</ns5:content>
    See that the content is encoded using the base64 format.
    Please help us to know how we can configure XML gateway to achieve this.
    Regards,
    Ajith

  • Style and encoding in XI SOAP Adapter

    Hello all,
    when describing a SOAP web service with WSDL using SOAP binding, there are two parameters affecting how SOAP messages are formatted:
    a.) style (may be 'document' or 'rpc')
    b.) encoding (may be 'literal' or 'encoded')
    Is there any information about what styles and encodings are supported by the XI SOAP Adapter? I looked in the help and in the FAQ OSS note, but didn't find it...
    I made some tests and could only get the combination document/literal to work. Is this the only supproted combination?
    Any help is appreciated.
    Regards,
    Matthias

    Hi
    There are other combinations also.
    A WSDL SOAP binding can be either a Remote Procedure Call (RPC) style binding or a document style binding. A SOAP binding can also have an encoded use or a literal use. This gives you four style/use models:
    1.RPC/encoded
    2.RPC/literal
    3.Document/encoded
    4.Document/literal
    Add to this collection a pattern which is commonly called the document/literal wrapped pattern and you have five binding styles to choose from when creating a WSDL file.
    Please go through the link:
    http://www-128.ibm.com/developerworks/webservices/library/ws-whichwsdl/
    This contains all the scenarios mentioned above.
    Hope this helps you out.
    regards
    Victoria

  • Soap Adapter : Encoding

    Hi guys,
    I'm having problems sending characters such as é ç è ô ... to my soap adapter. My scenario is that I am using a servlet to encode my soap envelop and then i'm sending it to my soap adapter. Here is a sample of my code :
    HttpURLConnection connection = null;               
    StringBuffer sb = new StringBuffer();
    sb.append(mapProp.getProperty(SOAP_BEG_ENVL));
                        sb.append(mapProp.getProperty(SOAP_BEG_BODY));
                        sb.append(mapProp.getProperty(SOAP_BEG_MT));
                        sb.append(mapProp.getProperty(SOAP_BEG_HDR));
                        sb.append(mapProp.getProperty(SOAP_BEG_INST)
                                    + confProp.getProperty(INSTITUTION)
                                    + mapProp.getProperty(SOAP_END_INST));
                        sb.append(mapProp.getProperty(SOAP_BEG_DATE)
                                    + date                    
                                    + mapProp.getProperty(SOAP_END_DATE));
                        sb.append(mapProp.getProperty(SOAP_BEG_TIME)
                                        + time
                                    + mapProp.getProperty(SOAP_END_TIME));      
                        sb.append(mapProp.getProperty(SOAP_END_HDR));
                        sb.append(mapProp.getProperty(SOAP_BEG_DETAIL));
                        buffReader = request.getReader();
                        do {
                             data = buffReader.readLine();
                             if (data != null) {
                                  data = data.replaceAll("&", "&");
                                  data = data.replaceAll("<", "<");
                                  data = data.replaceAll(">", ">");
                                  data = data.replaceAll(""", """);
                                  data = data.replaceAll("'", "&apos;");
                             sb.append(mapProp.getProperty(SOAP_BEG_DATA)
                                         + data
                                         + mapProp.getProperty(SOAP_END_DATA));
                        while(data != null);
                        sb.append(mapProp.getProperty(SOAP_END_DETAIL));
                        sb.append(mapProp.getProperty(SOAP_END_MT));
                        sb.append(mapProp.getProperty(SOAP_END_BODY));
                        sb.append(mapProp.getProperty(SOAP_END_ENVL));
                        //java.net.Authenticator.setDefault(new Auth());
                        url = new URL(confProp.getProperty(HTTP_URL));
                        connection = (HttpURLConnection) url.openConnection();
                        connection.setDoInput(true);
                        connection.setDoOutput(true);
                        connection.setRequestProperty("Content-Length", String.valueOf(sb.toString().length()));
                        connection.setRequestProperty("Content-Type","text/xml; charset=ISO-8859-1");
                        connection.setRequestProperty("SOAPAction","SomeAction");
                        connection.setRequestMethod( "POST" );
                        Charset cs = Charset.forName("ISO-8859-1");
                        out = connection.getOutputStream();
                        OutputStreamWriter osw = new OutputStreamWriter(out, cs);
                        osw.write(sb.toString().toCharArray());
                        osw.close();
                        out.close();
    This is the error message I get back from my client :
    java.io.IOException: Server returned HTTP response code: 400 for URL: https://XXXXX.wshs.:3405/dev/RM/Sync/Procurement
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:814)
         at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(DashoA12275)
         at App.main(App.java:117)
    I have no problems when their are no accented characters.
    thanks for your help.
    Steeve

    Hi,
    This might also cause due to time out, Check this Note - Note : 705013.
    This might help you
    400 Bad HTTP request (error -21)
    invalid content type for SOAP: TEXT/HTML
    Regards
    Agasthuri Doss

  • SOAP adapter and WS with rpc/encoded

    Hi All,
    Does anyone know if and how the SAP XI 3.0 SOAP Adapter supports WebServices which expects XML messages in rpc/encoded.
    Cheers,
    FRank

    Hi Frank,
    I have the same issue and I got a reply from OSS:
      This problem is caused by the diversification of the WSDL binding
    styles.
      A Web service is described by a WSDL document. A WSDL binding
    describes how the service is bound to a messaging protocol, particularly
    the SOAP messaging protocol. A WSDL SOAP binding can be either an RPC
    style binding or a document style binding. A SOAP binding can also have
    an encoded use or a literal use. This gives us four style/use models:
    - RPC/encoded
    - RPC/literal
    - document/encoded(It will probably disappear from future versions of
    WSDL.)
    - document/literal
      RPC styled web services have serious interoperability problems. This
    is the reason that the rpc style is not in the basic profile
    specification of the web interoperability and also it has been
    deprecated in the current soap specification. For these reason, the
    integration directory does not currently support the RPC style! I would
    suggest you to use other document style web service provider if possible
    . It's the best way to solve this problem. But if you persist in using
    this RPC web service provider, we still have a workaround solution:
    you need to convert your RPC wsdl to a document styled wsdl and import
    it to  the directory and if necessary, you need to add some mapping to
    solve some RPC interoperability problems.
      In your case,
    1. The WSDL file you used is RPC style.
    2. The XI SOAP adapter doesn't support the RPC style. It only sends the
    document/literal SOAP message which can't be understand by your web
    service provider.
      One of the significant differences between the SOAP message of RPC
    style and that of the document style: the operation name is contained in
    the RPC style SOAP message but not in the document's.
      However, you can't solve this problem by simply specify a method
    name. What you should do is convert your RPC wsdl to a document styled
    wsdl. RPC turns out to be a subset of document/literal. This
    means for any given RPC WSDL, you can create a completely
    equivalent document/literal WSDL that would describe the same wire
    messages. Here are the steps for doing this (mostly schema element
    declarations).
    Solution:
    For each RPC operation:
    1. For each part in the input and output messages of that operation,
    declare a type with the contents described in step 2.
    2. Declare an element with the name of the part, the type referenced by
    type=". The element form must be unqualified.
    3. Declare a global element with the operation name and the namespace
    from soap:body/@namespace in the binding. Make the type of this element
    the one defined in step 1 for the input message.
    4. Declare a global element with the operation name and the word
    Response appended to it and the namespace from soap:body/@namespace in
    the binding. Make the type of this element the one defined in step 1 for
    the output message.
    5. Change the input message to contain one part and reference the
    element you declared in step 3.
    6. Change the output message to contain one part and reference the
    element you declared in step 4.
    7. Change the style to document in the binding.
      After that, import the new WSDL file to the integration directory. You
    will find the "method name" appears in the document style SOAP message.
    But actually it's the name of the input element which is the same as
    the name of the operation. It's just a little trick.
    Cheers Stefan

  • SMIME in sender soap adapter

    Hi,
    I'd like to know the proper format of the POST request to a sender soap adapter with SMIME activated. I've found almost no documentation about it.
    I'm trying to send a document ciphered to PI via soap adapter (HTTP POST). I've done the following steps
    1. I activate SMIME in the sender soap adapter, and I specify "Decrypt" as the security procedure in the sender agreement. I also incorporate the private key in the keystore DEFAULT and reference to it in the sender agreement.
    2. I use OpenSSL to cipher an xml document like this (I use the public certificate associated to the previous private key) :
    --> openssl smime -encrypt -in fich.txt -out fich_encrypted.txt certTesting.pem
    What I get is:
    MIME-Version: 1.0
    Content-Disposition: attachment; filename="smime.p7m"
    Content-Type: application/x-pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
    Content-Transfer-Encoding: base64
    MIIC....[base64 content of the file encrypted]
    3. I use CURL to send the HTTP POST request to PI. Previously I get the binary file from the base64 content.
    > POST /XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_1[...]
    > Authorization: Basic c2U[...]
    > Host: pi.[...].com:50000
    > Accept: /
    > Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=fich_encrypted.der
    > User-Agent: Jakarta Commons-HttpClient/3.1
    > Accept-Encoding: text/xml
    > Content-Disposition: attachment; filename=fich_encrypted.der
    > Content-Length: 620
    > Expect: 100-continue
    but I get this error from the SOAP Adapter:
    --> java.io.IOException: invalid content type for SOAP: APPLICATION/PKCS7-MIME.
    I also get the same error if I remove the header Content-Disposition.
    4. If I send the xml file without ciphering (header Content-Type: text/xml;charset=UTF-8) I get the error:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: SOAP: call failed: java.lang.SecurityException: Exception in Method: VerifySMIME.run(). LocalizedMessage: SecurityException in method: verifySMIME( MessageContext, CPALookupObject ). Message: IllegalArgumentException in method: verifyEnvelopedData( ISsfProfile ). Wrong Content-Type: text/xml;charset=UTF-8. *Expected Content-Type: application/pkcs7-mime or application/x-pkcs7-mime*. Please verify your configuration and partner agreement
    PROBLEM --> I really don't know what the SOAP sender channel is expecting when SMIME is activated. I've tried to send the binary file encripted as an attachment and also directly, but the soap adapter complains.
    Thanks

    HI,
    for XI EP
    Please see the below links so that you can have clear Idea..
    /people/saravanakumar.kuppusamy2/blog/2005/02/07/interfacing-to-xi-from-webdynpro
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/java/integrating%20web%20dynpro%20and%20sap%20xi%20using%20jaxb%20part%20ii.article
    Consuming XI Web Services using Web Dynpro – Part II-/people/riyaz.sayyad/blog/2006/05/08/consuming-xi-web-services-using-web-dynpro-150-part-ii
    Consuming XI Web Services using Web Dynpro – Part I -/people/riyaz.sayyad/blog/2006/05/07/consuming-xi-web-services-using-web-dynpro-150-part-i
    /people/sap.user72/blog/2005/09/15/creating-a-web-service-and-consuming-it-in-web-dynpro
    /people/sap.user72/blog/2005/09/15/connecting-to-xi-server-from-web-dynpro
    Regards
    Chilla..

  • How to setup SOAP Adapter in order to include BinarySecurityToken element

    Hi,
      I am building an integration scenario where I need to configure a SOAP receiver that will include the BinarySecurityToken element (as described in http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf). The value of the element must be the hash value of the canonicalisation on the XML using SHA-1 hash algorithm and encode it in Base64. Is there a way to configure the SOAP adapter receiver channel to perform such a task? I have see the security settings in the channel and the setting in the receiver agreement but I am not sure how to produce the value as above. Any help is appreciated.
    Regards,
    S.Socratous

    Kiran look into this
    As per my knowledge any RFC - enabled function can be exposed as a webservice which can be consumed by any application written in any language directly..
    an XI message interface can also be exposed as a Webservice.
    RFC is function-oriented webservice.
    XI interface is integration webservice
    Check the following blogs for webserivces
    /people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1
    /people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions
    /people/sap.user72/blog/2005/11/22/xi-faqs-provided-by-sap-updated
    /people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2
    /people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi
    /people/siva.maranani/blog/2005/03/01/testing-xi-exposed-web-services
    /people/michal.krawczyk2/blog/2005/03/29/configuring-the-sender-rfc-adapter--step-by-step
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2131 [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/336365d3-0401-0010-9884-a651295aeaa9
    Webservice Development
    Consuming webservice
    /thread/122211 [original link is broken]
    Regards
    Sreeram.G.Reddy

  • Configure Soap Adapter for compress, gzip.

    HI to all experts,
    do anyone know how can configure a soap adapter with the parameter for compress, gzip.
    i found a document which explain so:
    localejbs/sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean
    XMBWS.XMLEncoding Content-Type charset iso-8859-1
    XMBWS.TransferEncoding Content-Transfer-Encoding base64
    XMBWS.Encoding Content-Encoding gzip
    XMBWS.AcceptEncoding Accept-Encoding compress, gzip
    but i f i insert this parameter the adapter give me back a response :
    Delivery of the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Could not access envelope: Unable to create envelope from given source: ; nested exception is com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to create envelope from given source:.
    seems that it have any difficult to read the payload.
    let me know if anyone have an idea.
    best Regards
    Claudio.

    Hi Stefan,
    is it enough this response?
    POST  HTTP/1.0
    Accept: /
    Accept-Encoding: compress, gzip
    Host: 10.180.160.29:8080
    User-Agent: SAP-Messaging-com.sap.aii.messaging/1.0505
    Content-ID: <[email protected]>
    Content-Disposition: attachment;filename="[email protected]"
    Content-Type: text/xml; charset=iso-8859-1
    Content-Description: SOAP
    Content-Transfer-Encoding: base64
    Content-Encoding: gzip
    Content-Length: 1292
    SOAPACTION:
    X-XMB_WS_ENCODED: version=3.0&MessageClass=ApplicationMessage&ProcessingMode=asynchronous&MessageId=478ce922-7b48-04b0-0200-00000ab44471&TimeSent=2008-01-16T13%3A36%3A45Z&Sender.Party=%3A%3A&Sender.Service=BS_SAP_TC3_700&Receiver.Party=%3A%3A&Receiver.Service=BS_IRIS_TXI&Interface=http%3A%2F%2Fgenerali.it%2Fmerge%2FUTILITY%2F01%2Firis%5EMI_COMPAGNIE_RES&QualityOfService=ExactlyOnce
    i get it by TCPGatway.
    thanks a lot.
    Claudio.

  • Base64 encode attachments but not xml payload

    Hi Everyone,
    Using the soap adapter I know that I can use an adapter module and base64 encode everything. Is it possible to base64 encode the attachments but leave the soap/xml payload as text/xml?
    Regards,
    Joe

    > Using the soap adapter I know that I can use an adapter module and base64 encode everything. Is it possible to base64 encode the attachments but leave the soap/xml payload as text/xml?
    Do you want to have attachments of type base64, or do you want to have transfer-encoding base64? The latter is not possible with adapter modules.
    Regards
    Stefan

  • Error in while calling a Soap Adapter using the UDF

    hi,
    i am trying to make a call to Soap Adapter using a UDF.
    The code of the UDF is as follows :
    InputStream isPayloadStream = null;
    AbstractTrace trace= container.getTrace();
    String sService="Business Component";
    String sChannelName="Soap Channel(Sender)";
    SystemAccessor accessor=null;
    trace.addInfo("entered UDF");
    StringBuffer sb = new StringBuffer(" ");
    trace.addInfo("creating the reference file");
    sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
    sb.append("<ns0:MT_123082_UDF xmlns:ns0=\"http//infosys.com/pi/projects/png/n1\">\n");
    sb.append("<INTERCHANGECONTRLNOS>" + var1 + "</INTERCHANGECONTRLNOS>");
    sb.append("<PGPARTNERID>"var2"</PGPARTNERID>""\n""</ns0:MT_123082_UDF>");
    trace.addInfo("trigerring the SOAP channel ");
    try{
    Channel channel = LookupService.getChannel(sService,sChannelName);
    accessor = LookupService.getSystemAccessor(channel);
    isPayloadStream = new ByteArrayInputStream((sb.toString()).getBytes());
    trace.addInfo("creating the xml payload ");
    XmlPayload payload = LookupService.getXmlPayload(isPayloadStream);
    Payload result=accessor.call(payload);
    catch (Exception e){
    trace.addInfo(e.getMessage());
    finally{
    if ( accessor !=null) {
    accessor.close();
    return " ";
    The above code is throwing an error while end to end testing.
    the scenario is such,while graphical mapping a UDF will be used, which will create an Xml payload, and send this payload to another SOAP to file scenario.
    The error in the sxmb_moni is:  "Error when calling an adapter by using the communication channel CC_123085_UDF_SOAP_OUT (Party: , Service: BC_123082_REMADV_D96A, Object ID: fa9c6ee15efc30c68ec34b08034d87d1) XI AF API call failed. Module exception: 'failed to set up the channel fa9c6ee15efc30c68ec34b08034d87d1'. Cause Exception: 'Channel stopped by administrative task.'."
    Please can anyone suggest how this error can be rectified.
    regards,
    Meenakshi

    Hi,
    i have checked the communication channel and the XML. The following error occurs everytime i try to run the scenario.
    Error:
    Error when calling an adapter by using the communication channel CC_123082_UDFRECEIVER_SOAP_IN (Party: , Service: BC_123082_REMADV_D96A, Object ID: 2a895589066d30d4b2686e9d3a8d4c8d) XI AF API call failed. Module exception: 'SOAP Error'. Cause Exception: 'SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 400 Bad Request'
    Please let me know how this error can be resolved.
    Regards,
    Meenakshi

  • Receiver SOAP Adapter error

    Hi All,
             I am getting this response error message in my receiver SOAP Adapter while invoking a synchronous webservice.
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--
    Request Message Mapping
      -->
    - <ProcessMessageResponse xmlns="http://Sleek.Integrator.Messaging" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <ProcessMessageResult>Value cannot be null. Parameter name: Request string is a null reference.</ProcessMessageResult>
      </ProcessMessageResponse>
    Thx in advance
    Ravijeet

    Hi All,
             I am still getting the same error value is null. I am not able to track what could be the cause of the error. If I am taking the message from SXMB_MONI and using it in a client tool it is successfully calling the webservice.
    Do we need to explicitly mention in some configuration that content type is soap/xml. SOAP header is omitting the content type or is not specifying "soap/xml" as the content type.
    I am interacting with a WAF websevice, is there any compatibilty issue with Windows Webservice and SAP XI?
    Also what should I pick as the SOAP Action from this wsdl file definition
    <wsdl:portType name="IMessageProcessor">
              <wsdl:operation name="ProcessMessage">
                   <wsdl:input message="tns:IMessageProcessor_ProcessMessage_InputMessage" wsaw:Action="XXX.Messaging/ProcessMessage"/>
                   <wsdl:output message="tns:IMessageProcessor_ProcessMessage_OutputMessage" wsaw:Action="XXX.Messaging/ProcessMessageResponse"/>
              </wsdl:operation>
         </wsdl:portType>
         <wsdl:service name="MessageProcessor">
              <wsdl:port name="BasicHttpBinding_IMessageProcessor" binding="i0:BasicHttpBinding_IMessageProcessor">
                   <soap:address location="http://XXX.com/cardax/provisioningservice"/>
              </wsdl:port>
    Thx in advance
    Ravijeet

  • WHAT IS THE BEST WAY TO CREATE AN XSD FILE (TO BE USED BY SOAP ADAPTER)

    Dear friends
    I have a simple scenario.
    OUTBOUND DATA  -->  SOAP ADAPTER  --> ( XI )  -->  RFC ADAPTER  --> INBOUND DATA
    The XML file that I got from mapping area of IR (Design) is as follows
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_NAME_SOURCE xmlns:ns0="http://test3.com">
       <FIRSTNAME>DAVE</FIRSTNAME>
       <LASTNAME>SMITH</LASTNAME>
    </ns0:MT_NAME_SOURCE>
    If you notice, there are only 2 fields.
    I need to create an XSD file and import it as an external object, which I can use for SOAP Adapter.
    Which is the best way to create it.
    Also, I need to know if there is any step by step of sending a message from XML SPY. I have downloaded this software, but am not able to undertand how to use this.
    Hope to hear from any experts on this forum.
    Thanks in advance
    Ram

    Hi Ram,
    See the below blog..
    It shows how to send SOAP message using XML Spy.
    It also shows how to generate wsdl.
    /people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi
    Regards,
    Sumit

  • Setting interface name dynamically from client for SOAP Adapter...

    Hi,
    does anyone have experience in setting the sender interface name in the HTTP-SOAP request dynamically? I have followed the instructions in "How To Use the XI 3.0 SOAP Adapter" on page 17 (see also SAP Note 856597) which say:
    "If you select Use Encoded Headers and Use Query String,
    [...]The sender SOAP adapter creates the XI message header according to the
    information provided in the query string. [...] In the sender SOAP adapter, you can use only some of the parameters, but the first
    parameter must always be the version. For example, you send from the Web service client to the following URL: http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet?channel=<party>:<service>:<channel>&version=3.0&Interface=http%3A
    %2F%2Fsap.com%2Ftest%5ETest
    This will overwrite the default interface and namespace of the sender channel."
    This is exactly what I need! However, what I actually get as a response following this description is a SOAP:Fault with a java.lang.StringIndexOutOfBoundsException: String index out of range: -1.
    Has anyone got this to work properly?
    Thanks in advance.

    Thank you for your input. I am using the following format for the call (with "x" standing for one letter each):
    http://xix.xxx.xx.xxx:5xx00/XISOAPAdapter/MessageServlet?channel=:xx_xxx_xxx_xxxx:xx_xxx_x_SOAP_S&version=3.0&Interface=http%3A%2F%2Fxxxxxxxx.xx%2Fxxxxxx%2Fxxxxxxxxxxxxxxxxxxxxxxxx%5Exxxxxxxxxxxxxxxxxxxxxx
    Anything wrong with that? With unchecked "Use Encoded Headers" and "Use Query String" it works fine (default interface) but as soon as I set these flags I get the SOAP-Fault response.
    We are on XI 3.0 SPS18.

Maybe you are looking for