SOAP to RFC1 to  to RFC2 to  SOAP

Hi experts,
from a soap client post  the data to  RFC1,based on the response of RFC1, RFC2 has to be invoked and the response send to the calling webservice. how do we do this ?
Thanks

Hi,
If you are creating data in SAP using RFC lookup then its a bad idea because
The accessors do not support transactional behaviour. Therefore, they should not be used to change the state in the accessed system; writing data to the accessed system can lead to inconsistencies. The accessors should only be used to read data from the accessed system.
http://help.sap.com/javadocs/NW04/current/pi/com/sap/aii/mapping/lookup/LookupService.html

Similar Messages

  • Wsdl url of pi SOAP Sender (that is used by invoking soap client)

    hi,
    i have a scenario
    nonSapAppl>SoapSenderAdapter>PI>InboundProxy>Ecc
    i am using xmlspy or SoapUi tool as nonSapAppl for invoking the scenario for testing.
    the soapUI tool needs the url of the wsdl.
    for that, i logged on to ID, and opened the SenderAgreement and Menu -> DisplayWSDL, and there i found the wsdl url as:
    http://pidevsrvr:50100/dir/wsdl?p=sa/bfcbca882eba3df39bebc4ff6014c336
    by using this url in soapUi tool, i am able to invoke the scenario.
    it seems the url is generated by the pi system, this url is made up some unique set of chars like bfcbca882eba3df39bebc4ff6014c336 at the end.
    1. is this url fixed for this for this scenario.
    2. currently we develeoped on pi dev server, if transport to qa or production, will the url except the hostname will remain exactly the same.
    3. is there any advantage of using "publish in SR" option.
    4. our nonSAP application guy is asking some readable url prefarably, like http://pidevsrvr:50100/dir/wsdl?p=sa/scenarioReplicateAddressData. is it possible to customise the url.
    thanks,
    Madhu_1980

    I am trying to call PI web service for Oracle Procedure. I am able to test it from SOAP UI Client. But when calling from Oracle, exception is thrown.
    Procedure -:
    /* Formatted on 2014/06/16 20:38 (Formatter Plus v4.8.8) */
    CREATE OR REPLACE PROCEDURE cdba.p_init_ws_transaction
    AS
       v_soap_request_text   CLOB;
       v_request             UTL_HTTP.req;
       v_response            UTL_HTTP.resp;
       v_buffer              VARCHAR2 (32767);
       v_response_xml        CLOB;
       l_soap_env            XMLTYPE;
       l_soap_body           XMLTYPE;
       ls_ematn              VARCHAR2 (50);
       ls_test               VARCHAR2 (1000);
       s_namespace           VARCHAR2 (1000);
       l_namespace           VARCHAR2 (50);
       l_raw_data            RAW (512);
       l_clob_response       CLOB;
       l_buffer_size         NUMBER (10)      := 512;
       l_substring_msg       VARCHAR2 (512);
    --   l_napaka_opis         VARCHAR2 (1000);
    --   l_napaka_koda         VARCHAR2 (100);
    --   l_tmp                 VARCHAR2 (100);
    BEGIN
    --   --nastavimo certifikat in geslo
    --   UTL_HTTP.set_wallet (g_lokacija_certifikata, g_geslo);
       --nastavimo soap request:
       v_soap_request_text :=
          ' <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:amp="http://tsl/mm/100064/AMPLDetails">
       <soapenv:Header/>
       <soapenv:Body>
          <amp:MT_AMPLDetails_Request>
                   <row>
      <BMATN>0008C0053</BMATN>
      </row>
          </amp:MT_AMPLDetails_Request>
       </soapenv:Body>
    </soapenv:Envelope>';
       SELECT XMLTYPE (v_soap_request_text).EXTRACT ('//row/BMATN/text()',
                                                     s_namespace || l_namespace
                                                    ).getstringval ()
         INTO ls_test
         FROM DUAL;
       DBMS_OUTPUT.put_line (ls_test);
       v_request :=
          UTL_HTTP.begin_request
             (url         => 'http://176.0.11.76:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=SI_OS_AMPLDetails&receiverParty=&receiverService=&interface=SI_OS_AMPLDetails&interfaceNamespace=http://tsl/mm/100065/AMPLDetails',
              method      => 'POST'
       --UTL_HTTP.set_header (v_request, 'User-Agent', 'Mozilla/4.0');
       --v_request.method := 'POST';
       UTL_HTTP.set_body_charset (v_request, 'UTF8');
       UTL_HTTP.set_header (r          => v_request,
                            NAME       => 'Content-Length',
                            VALUE      => DBMS_LOB.getlength (v_soap_request_text)
       UTL_HTTP.set_header (r          => v_request,
                            NAME       => 'SOAPAction',
                            VALUE      => 'http://sap.com/xi/WebService/soap1.1'
       UTL_HTTP.set_authentication (v_request, '157769', 'tatasap@89');
       UTL_HTTP.write_text (r => v_request, DATA => v_soap_request_text);
       <<request_loop>>
       FOR i IN 0 .. CEIL (LENGTH (v_soap_request_text) / l_buffer_size) - 1
       LOOP
          l_substring_msg :=
               SUBSTR (v_soap_request_text, i * l_buffer_size + 1, l_buffer_size);
          DBMS_OUTPUT.put_line (l_substring_msg);
          BEGIN
             l_raw_data := UTL_RAW.cast_to_raw (l_substring_msg);
             UTL_HTTP.write_raw (r => v_request, DATA => l_raw_data);
          EXCEPTION
             WHEN NO_DATA_FOUND
             THEN
                EXIT request_loop;
          END;
       END LOOP request_loop;
       v_response := UTL_HTTP.get_response (v_request);
       BEGIN
          --convert the response to a CLOB
          <<response_loop>>
          LOOP
             DBMS_OUTPUT.put_line ('1');
             UTL_HTTP.read_raw (v_response, l_raw_data, l_buffer_size);
             l_clob_response :=
                         l_clob_response || UTL_RAW.cast_to_varchar2 (l_raw_data);
             DBMS_OUTPUT.put_line (UTL_RAW.cast_to_varchar2 (l_raw_data));
          END LOOP response_loop;
       EXCEPTION
          WHEN UTL_HTTP.end_of_body
          THEN
             UTL_HTTP.end_response (v_response);
       END;
       DBMS_OUTPUT.put_line ('done');
       DBMS_OUTPUT.put_line ('done');
       s_namespace :=
          'xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema/" ';
       l_namespace := 'xmlns="http://tempuri.org/"';
    --   SELECT XMLTYPE (l_clob_response).getstringval ()
    --     INTO ls_test
    --     FROM DUAL;
       SELECT XMLTYPE (l_clob_response).EXTRACT ('//record/EMATN/text()',
                                                 s_namespace || l_namespace
                                                ).getstringval ()
         INTO ls_test
         FROM DUAL;
       DBMS_OUTPUT.put_line (ls_test);
    EXCEPTION
       WHEN OTHERS
       THEN
          DBMS_OUTPUT.put_line ('exception block');
          DBMS_OUTPUT.put_line (DBMS_UTILITY.format_error_backtrace);
          UTL_HTTP.end_response (v_response);
          DBMS_OUTPUT.put_line (SQLERRM);
    --      p_napaka := SQLERRM;
    --      p_url_megapos := NULL;
    END;                                              -- end p_init_ws_transaction
    Output -:
    0008C0053
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:amp="http://tsl/mm/100064/AMPLDetails">
       <soapenv:Header/>
       <soapenv:Body>
          <amp:MT_AMPLDetails_Request>
                   <row>
      <BMATN>0008C0053</BMATN>
      </row>
          </amp:MT_AMPLDetails_Request>
       </soapenv:Body>
    </soapenv:Envelope>
    1
    <?xml version='1.0'?>
    <!-- see the documentation -->
    <SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>
      <SOAP:Body>
        <SOAP:Fault>
          <faultcode>SOAP:Server</faultcode>
          <faultstring>Server Error</faultstring>
          <detail>
            <s:SystemError xmlns:s='http://sap.com/xi/WebService/xi2.0'>
              <context>XIAdapter</context>
              <code>ADAPTER.JAVA_EXCEPTION</code>
              <text><![CDATA[
    java.lang.NullPointerException: while trying to invoke the method java.lang
    1
    .String.indexOf(int) of a null object loaded from local variable 'ctype'
      at com.sap.aii.af.sdk.xi.net.MIMEInputSource.decodeContentType(MIMEInputSource.java:456)
      at com.sap.aii.af.sdk.xi.net.MIMEInputSource.readBody(MIMEInputSource.java:351)
      at com.sap.aii.af.sdk.xi.net.MIMEServletInputSource.parse(MIMEServletInputSource.java:58)
      at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:343)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
      at javax.servlet.http.HttpServl
    1
    et.service(HttpServlet.java:847)
      at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:152)
      at com.sap.engine.services.servlets_jsp.server.Invokable.invoke(Invokable.java:38)
      at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:457)
      at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:210)
      at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:441)
      at
    1
    com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:430)
      at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:38)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:81)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services
    1
    .servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:276)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:81)
      at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.filters.ResponseLogWriter.
    1
    process(ResponseLogWriter.java:60)
      at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)
      at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.
    1
    httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)
      at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.filters.SessionSizeFilter.process(SessionSizeFilter.java:26)
      at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractC
    1
    hain.java:78)
      at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:57)
      at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:43)
      at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)
      at com.sap.engine.services.http
    1
    server.chain.AbstractChain.process(AbstractChain.java:78)
      at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:475)
      at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:269)
      at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:56)
      at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
      at com.sap.engine.core.thread.execution.Executable.run(Executable.java:10
    1
    1)
      at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
              ]]></text>
            </s:SystemError>
          </detail>
        </SOAP:Fault>
      </SOAP:Body>
    </SOAP:Envelope>
    1
    done
    done

  • HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7

    All -
    I'm new to consuming web services in JDeveloper. I'm using Oracle JDEV 10.1.3.3/OC4J.  I'm using this version since it is compatible with Oracle EBS 12.1.3.  My intent is to pull data from our third party recruitment app (Success Factors) and load that data into Oracle HRIS.  I'm already doing this through a .NET application.  I'm converting it to be a Java Concurrent Program in EBS.  The code listed below is a stub call to verify I'm on the right track. I created a JDeveloper Web Services proxy project.  I'm testing it locally on my windows desktop.  When I'm able to consume the service successfully, then I'll think about moving it to the EBS server.
    I'm getting the following error when I invoke the following service:
    HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    End point is: https://api4.successfactors.com/sfapi/v1/soap?wsdl
    Any help/assistance would be much appreciated. 
    Below is my code and output of my test:
    package emsc.oracle.apps.emscper.sfapi.proxy;
    import HTTPClient.HTTPConnection;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSession;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.IsValidSessionResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Login;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LoginResult;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Logout;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.LogoutResponse;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFCredential;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.SFParameter;
    import emsc.oracle.apps.emscper.sfapi.proxy.types.sfobject_sfapi_successfactors_com.Error;
    import java.io.File;
    import javax.xml.rpc.ServiceFactory;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Date;
    import javax.xml.ws.BindingProvider;
    import javax.xml.soap.SOAPException;
    import java.util.Map;
    import oracle.security.ssl.OracleSSLCredential;
    public class SFAPITest {
        // Declare members:      
        private String companyId;
        private String userName;
        private String password;
        private String developerKey;
        private Date   effDt;
        private String greaterThanEffDt;
        private String lessThanEffDt;
        // Declare constants:      
        final static private String breakLine = "+---------------------------------------------------------------------------+";
        final static private String format    = "yyyy-mm-dd";      
        private enum ReqId {
            PrimaryReq(25),
            PrimaryReqCEO(26),
            EmCarePrimary(27),
            RTI(28),
            EmCareClinical(29);
            private int reqId; 
            private ReqId() {
            private ReqId(int value) {
                reqId = value;
            public int getReqId() {
                return reqId;
        // Getters and Setters:  
        protected String getCompanyId() {
           return this.companyId;
        protected void setCompanyId(String value) {
           this.companyId = value;                 
        protected String getUserName() {
           return this.userName;
        protected void setUserName(String value) {
           this.userName = value;                 
        protected String getPassword() {
           return this.password;
        protected void setPassword(String value) {
           this.password = value;                 
        protected String getDeveloperKey() {
           return this.developerKey;
        protected void setDeveloperKey(String value) {
           this.developerKey = value;                 
        protected Date getEffDt() {
            return this.effDt;
        protected void setEffDt(Date value) {
            this.effDt = value;                 
        protected String getGreaterThanEffDt() {
           return this.greaterThanEffDt;
        protected void setGreaterThanEffDt(String value) {
           this.greaterThanEffDt = value;                 
        protected String getLessThanEffDt() {
           return this.lessThanEffDt;
        protected void setLessThanEffDt(String value) {
           this.lessThanEffDt = value;                 
        public void runProgram()
            SFAPIService mySFAPIService;
            String CompletionText = "";
            String effDtStr2 = null;
        /* Code your program logic here.
        * Use getJDBCConnection method to get the connection object for any
        * JDBC operations.
        * Use CpContext provided commit,rollback methods to commit/rollback
        * data base transactions.
        * Don't forget to release the connection before returning from this
        * method.
        /* Call setCompletion method to set the request completion status and
        * completion text.
        * Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING,
        * ReqCompletion.ERROR.
        * Use Completion text message of length 240 characters. If it is more
        * than 240 then full string will appear in log file and truncated 240
        * characters will be used as request completion text.
        try
            ServiceFactory factory = ServiceFactory.newInstance();
            mySFAPIService = (emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService)factory.loadService(emsc.oracle.apps.emscper.sfapi.proxy.SFAPIService.class);      
            SFAPI api = mySFAPIService.getSFAPI();
           /// SFAPI api = new SFAPI();
            //Map<String, Object> requestContext = ((BindingProvider) api).getRequestContext();
            //requestContext.put(BindingProvider.SESSION_MAINTAIN_PROPERTY, true);
            System.out.println("ServiceName => " + mySFAPIService.getServiceName().toString());
            System.out.println("End Point   => " + mySFAPIService.getServiceName().toString());
            System.out.println(breakLine);
            // Authentication: Login to SFAPI:
            SFCredential credential = new SFCredential();
            // Fake credentials being passed in for this post:   
            credential.setCompanyId("XXX");
            credential.setUsername("XXX");
            credential.setPassword("XXX");
            credential.setDeveloperKey("XXX");
            HTTPConnection httpsConnection = null;       
            OracleSSLCredential _credential = new OracleSSLCredential();      
            _credential.setWallet("\\\\\\C:\\Program Files\\Java\\jdk1.6.0_33\\jre\\lib\\security", "ParkEstes3");
            /*System.setProperty("javax.net.ssl.trustStore","C:\\\\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\keystore");
            System.setProperty("javax.net.ssl.trustStorePassword","changeit");  
            System.out.println(System.getProperty("javax.net.ssl.trustStore"));*/
            // SFParameter: Define a generic SFParameter List.  This is a necessary parameter
            // to invoking calls in SFAPI:      
             /*System.setProperty("javax.net.ssl.keyStore",
             "file:\\\C:\\jdk1.4.1\\jre\\lib\\security\\client.keystore");
             System.setProperty("javax.net.ssl.keyStorePassword","welcome");         */
            /*  System.setProperty("oracle.net.wallet_location",
                          "(SOURCE=(METHOD=file)(METHOD_DATA=(DIRECTORY=\\\C:\Users\dparrish\Oracle\WALLETS)))");  // (2)                     */
            File kstore = new File("C:\\OraHome_1\\jdev\\jdevbin\\jdk\\jre\\lib\\security\\jssecacerts");
            boolean exists = kstore.exists();
            if (!exists) {
                System.out.println("Keystore does not exist");
            else {
                System.out.println("Keystore does exist");
            System.setProperty("javax.net.ssl.trustStore", kstore.getAbsolutePath());
            System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
            //System.setProperty("proxySet", "false");
            //System.setProperty("http.proxyHost", "127.0.0.1");
            //System.setProperty("http.proxyPort", "8080");
            System.out.println(kstore.getAbsolutePath());
            List<SFParameter> lst = new ArrayList<SFParameter>();
            SFParameter param = new SFParameter();
            param.setName("");
            param.setValue("");
            lst.add(param);      
            SFParameter[] sfParam = lst.toArray(new SFParameter[lst.size()]);
            Login login = new Login();
            try {
                login.setCredential(credential);
                System.out.println("1");
                login.setParam(sfParam);
                System.out.println("2");
                LoginResponse loginResponse = new  LoginResponse();
                LoginResult loginResult = new LoginResult();
                try {
                     loginResponse = api.login(login);               
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("3");
                try {               
                     loginResult = loginResponse.getResult();
                catch (Exception e ) {
                    System.out.println(e.getMessage());
                System.out.println("4");
                IsValidSession vs = new IsValidSession();                  
                IsValidSessionResponse isValidSessionResponse = api.isValidSession(vs);
                System.out.println("5");
                if (isValidSessionResponse.isResult()) {
                     System.out.println("Session is valid");
                     System.out.println("Result => " + loginResult.getSessionId());
                     System.out.println(breakLine);              
                    Logout logout = new Logout();
                    LogoutResponse logoutResponse = api.logout(logout);
                    if (logoutResponse.isResult()) {
                         System.out.println("Logout of SFAPI Successful");
                    else {
                        System.out.println("Logout of SFAPI Unsuccessful");
                else {
                     System.out.println("Session is invalid");
                    List<Error> errors = new ArrayList<Error>();
                    for (int i = 0; i < loginResult.getError().length;  i++) {
                        errors.add(loginResult.getError()[i]);
                    for (int i = 0; i < errors.size(); i++) {
                         System.out.println("Error Indice   => " + i);
                         System.out.println("Error Code:    => " + errors.get(i).getErrorCode());
                         System.out.println("Error Message: => " + errors.get(i).getErrorMessage());
                         System.out.println(breakLine);                                                          
                    } // end for loop of SFObject errors
                } // end InvalidSession
            catch (Exception e)
                 System.out.println("Session Credential Exception");
                 System.out.println("Exception => " + e.getMessage());
                 System.out.println(breakLine);                   
        catch (Exception e)
            System.out.println("Parameter List Exception");
            System.out.println("Exception => " + e.getMessage());
            System.out.println(breakLine);
        }   // end runProgram
        // Constructor:
        public SFAPITest()  {
        } // end constructor
        public static void main (String args[]) {
            try
                SFAPITest test = new SFAPITest();        
                test.runProgram();
            catch (Exception e) {
                System.out.println("main exception => " + e.getMessage());
    } // SFAPITest
    Here is the output with trace:
    WARNING: Unable to connect to URL: https://api4.successfactors.com:443/sfapi/v1/soap due to java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    Session Credential Exception
    Exception => ; nested exception is:
        HTTP transport error: javax.xml.soap.SOAPException: java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: String index out of range: -7
    +---------------------------------------------------------------------------+
    Process exited with exit code 0.

    The other end is throwing back a programming error.
    That might be because you are sending incorrect data and the other end fails to validate it.
    You might be able to guess based on your C# code.  But, since you are using soap one generic solution is available to you.
    - Get an http proxy interceptor like wireshark.
    - Run it while your C# app runs, collect the http requests from that.
    - Run it while running your java code, collect the http requests from that.
    Compare the two.

  • SOAP error when using RTC Integration Services SOAP Operations

    Oracle Real-Time Collaboration 10.1.2.0.0
    We are getting exception in the SOAP response when trying to use integration services from RTC. A portion of the log file is given below:
    09/04/13 09:46:58 se <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SOAP-ENV:Body><ns1:createSession SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
    xmlns:ns1="urn:oracle-imt-service-facade-AuthenticationServiceEI">
    <param0 xsi:type="xsd:string">10000829</param0>
    <param1 xsi:type="xsd:string">MTAwMDA4Mjk6QCcqXSEvNVFELU5qZWwyVA==</param1>
    <param2 xsi:type="xsd:string">SITE</param2>
    </ns1:createSession></SOAP-ENV:Body></SOAP-ENV:Envelope>
    09/04/13 09:46:58 conn org.apache.axis.soap.SOAPConnectionImpl@925037
    [GC 61896K->52592K(100524K), 0.0077250 secs]
    09/04/13 09:46:58 response org.apache.axis.Message@197cfcb
    09/04/13 09:46:58 mpiResponse <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Fault><faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:HTTP</faultcode><faultstring>(0)null</faultstring><detail><string>return
    code: 0
    </string><ns2:HttpErrorCode xmlns:ns2="http://xml.apache.org/axis/">0</ns2:HttpErrorCode></detail></soapenv:Fault></soapenv:Body>
    Any help for fixing this issue would be highly appreciated.
    Thanks in advance.

    This article is all about setting up security on the web service. But, I just want to connect to the web service as a client using the proxy and the web service doesn't have any security set on it at this time.
    I am getting a connection timeout, even when I set the syncMaxWaitTime in the domain.xml file on the app server to a higher number (although this doesn't seem to affect the time it takes for the debugger to return).

  • SOAP envolope with UBL xml standard in SOAP Header

    Hello All,
    Currently working on webservice(SOAP Receiver) scenario. Its using the UBL XML standard and require information in the SOAP envelope header with UBL as follows.
    For example:
    <.soapenv:Header>
           -, <,eb:MessageHeader soapenv:mustUnderstand=":1" version="2.0".
           xmlns:eb="
           http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd
           ">
             -, <,eb:From>
                 <eb:PartyId>TEST</eb:PartyId>
             </:eb:From>
             -, <,eb:To>
                 <eb:PartyId>AVL</eb:PartyId>
             </:eb:To>
               <eb:CPAId>123</eb:CPAId>
               <eb:ConversationId>123</eb:ConversationId>
               <eb:Service>OMService</eb:Service>
               <eb:Action>PricingAndAvailability</eb:Action>
             -, <,eb:MessageData>
                 <eb:MessageId>1226949787945</eb:MessageId>
                 <eb:Timestamp>Mon Nov 17 13:23:07 CST 2008</eb:Timestamp>
             </:eb:MessageData>
           </:eb:MessageHeader:>
         </:soapenv:Header>
    I am able to call this webservice successfully with XML SPY and is functioning properly.
       Is the XI SOAP Reciver adapter capable of creating the SOAP envelope header
       like this?
    Let me know if you have any thoughts on this...
    Thanks in Advance
    Edited by: sreenivas tirunahari on May 5, 2009 2:53 PM

    The header could be created using a java mapping or XSL mapping (I think XSL would be easier). However, Runtime constants could be accessed easily using few lines of java code
    http://help.sap.com/saphelp_nw04/helpdata/en/b3/9a2aeb24dc4ab6b1855c99157529e4/content.htm
    Regards,
    Prateek

  • SOAP 1.2 web service fails when SOAP header has digital signatures

    Hi,
    When we upgraded our JAX-RPC web services from SOAP 1.1 to SOAP 1.2, they started failing with the following response.
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header>
    <env:Upgrade>
    <env:SupportedEnvelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
    qname="soap12:Envelope"/>
    </env:Upgrade>
    </env:Header>
    <env:Body>
    <env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <faultcode>env:VersionMismatch</faultcode>
    <faultstring>Version Mismatch</faultstring>
    <faultactor>http://schemas.xmlsoap.org/soap/actor/next</faultactor>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    The following two errors were in log.xml
    An error occurred for port: {http://xxx.xxx.xxx/xxx/1.0/ws/TestService}TestServicePort: oracle.j2ee.ws.common.soap.fault.SOAP11VersionMismatchException: Version Mismatch.
    Unable to determine operation id from SOAP Message.
    We use web service handlers to add and verify digital signatures. The request message seems to be making it to the web service but is failing before reaching the web service handler which verifies the digital signature.
    Everything works fine when we don't add the digital signatures. The SOAP message without the digital signature doesn't have the SOAP header. I've listed the SOAP message with the digital signature below.
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
         xmlns:ns0="http://xxx.xxx.xxx/1.4/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <env:Header>
              <wsse:Security
                   xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                        <ds:SignedInfo>
                             <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                             <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
                             <ds:Reference URI="#Body">
                                  <ds:Transforms>
                                       <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
                                  </ds:Transforms>
                                  <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                  <ds:DigestValue>...</ds:DigestValue>
                             </ds:Reference>
                        </ds:SignedInfo>
                        <ds:SignatureValue>
                        </ds:SignatureValue>
                        <ds:KeyInfo>
                             <ds:X509Data>
                                  <ds:X509Certificate>
                                  </ds:X509Certificate>
                             </ds:X509Data>
                             <ds:KeyValue>
                                  <ds:RSAKeyValue>
                                       <ds:Modulus>
                                       </ds:Modulus>
                                       <ds:Exponent>AQAB</ds:Exponent>
                                  </ds:RSAKeyValue>
                             </ds:KeyValue>
                        </ds:KeyInfo>
                   </ds:Signature>
              </wsse:Security>
         </env:Header>
         <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Body">
              <ns0:SearchRequestMessage
                   xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:gml="http://www.opengis.net/gml"
                   xmlns:xxx="http://xxx.xxx.xxxl/1.4/"
                   xmlns:ns5="http://www.w3.org/1999/xlink"
                   >
                   <xxx:SearchCriteria itemsPerPage="10" maxTimeOut="180000" startIndex="1" startPage="1" totalResults="25">
                   </xxx:SearchCriteria>
              </ns0:SearchRequestMessage>
         </env:Body>
    </env:Envelope>
    We are using Oracle AS 10.1.3.3.0, WSDL 1.1, and SOAP 1.2. Everything works fine with WSDL 1.1 and SOAP 1.1.

    Take a look 'How to Use a Custom Serializer with Oracle Application Server Web Services' [1].
    In your case, you should be looking at BeanMultiRefSerializer (org.apache.soap.encoding.soapenc), which will serialize your data using href and providing a way to deal with cycles.
    All the best,
    Eric
    [1] http://www.oracle.com/technology/tech/webservices/htdocs/samples/serialize/index.html

  • Error in SOAP receiver channel in Synchronous Proxy to SOAP scenario

    Hi all,
    We are experiencing an issue with a synchronous Proxy to SOAP scenario. Getting below error message in the SOAP receiver communication channel for the response message.
    SOAP: Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
    Returning to application. Exception: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error encountered while executing mapping: com.sap.aii.af.service.mapping.MappingException: com.sap.aii.utilxi.misc.api.ResourceException: Could not determine mapping steps for message 1364b76e-ecbf-11e4-85f4-000023acfde6.
    We are running PI 7.4.
    Any help is appreciated.
    Thanks,
    Pushpa

    Hi,
    Seems the Receiver Webservice is not reachable. Did you try to test it using SOAP UI tool.
    1. Test a fresh message from local SOAP UI tool.
    2. Pick 3rd party WSDL file and Import in SOAP UI tool.
    3. Put some dummy data for mandatory fields
    4. Trigger it msg and ckh if you get successful / response msg.
    5. Check if firewall is open and that URL is not blocked.
    Hope it helps
    Regards,
    Azhar

  • Mapping problem in SOAP response to RFC response - RFC-XI-SOAP scenario

    Hi gurus,
    response structure from SOAP is as below (inbound msg - in SXMB_MONI)
    MONI and RWB shows successful(I am using graphical mapping)
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Inbound Message
      -->
    - <ns0:testrequestResponse xmlns:ns0="conversion" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" Status="Success">
    - <ns0:SAP_OUT>
           <ns0:F1 Value="1234" />
           <ns0:F2 Value="2345" />
         - <ns0:SAP_LINES>
             - <ns0:SAP_LINE>
                    <ns0:SAP_L Value="1" />
                    <ns0:Field5 Value="" />
                  - <ns0:SAP_S1>
                           - <ns0:SAP_S>
                                   <ns0:ID Value="11111" />
                                   <ns0:SAP__NO Value="0001" />
                                   <ns0:DATE1 Value="08/15/2008 00:00:00:000" />
                                   <ns0:FST/>
                             </ns0:SAP_S>
                    </ns0:SAP_S1>
             </ns0:SAP_LINE>
          </ns0:SAP_LINES>
      </ns0:SAP_OUT>
      </ns0:testrequestResponse>
    I make the RFC response with same structure and mapped it but it is not giving the full structure rather it is giving only this (Outbound Msg in SXMB_MONI)
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns1:Z_MYRFC.Response xmlns:ns1="urn:sap-  com:document:sap:rfc:functions">
      <STATUS>Success</STATUS>
      </ns1:Z_MYRFC.Response>
    what went wrong?

    Hi,
    You would have forgot to map parent node coming after <STATUS>Success</STATUS>
    Make sure that you have properly mapped all the parents and there child.
    Are you getting the same result while Testing it standalone?
    Thanks
    Sunil Singh

  • How to capture SOAP fault when using "Do not use SOAP envelope" parameter

    Hi,
    we have a synchronous  RFC -> XI -> Web Service scenario. The Web Service requires some custom SOAP header elements for user authorization which forced us create the entire SOAP message in a message mapping and to set the "Do not use SOAP envelope" parameter in the receiving SOAP adapter.
    In order to capture the SOAP fault message from the Web Service we have created a message interface with a fault message and also created an interface mapping with a fault message mapping.
    Our problem is that the fault message is not populated when we get a SOAP fault message back from the Web Service. Is this due to the fact that we have set the  "Do not use SOAP envelope" parameter?
    Thanks in advance!
    Stefan
    Message was edited by:
            Stefan Nilsson

    Hi Bhavesh,
    I have exaactly same scenario. But the only difference is that the Successful payload is also not coming into PI.
    The request is successfully hittng the webservice.
    Please guide me on how to capture the paylod.
    I am using the WSDL provided by the thirdparty but sill the message is not coming into PI.

  • SOAP to JDBC/RFC  - RFC/JDBC  to  SOAP XI Scenario

    Hello,
    Can anybody give me the links for SOAP to JDBC/RFC-BAPI or RFC-BAPI/JDBC ---> XI ---> SOAP XI Scenario?
    I tried searching, but there isn't any step-by-step approach for it.
    Thank you in advance.
    Cheers,
    Deepak.

    Hi,
    Check some links on SOAP,
    RFC -> XI -> WebService - A Complete Walkthrough
    /people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1
    /people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2
    SOAP with attachments
    /people/michal.krawczyk2/blog/2006/04/19/xi-rfc-or-abap-proxy-abap-proxies-with-attachments
    /people/padmankumar.sahoo/blog/2005/02/15/an-overview-of-soap
    /people/siva.maranani/blog/2005/05/23/communication-between-sap-system-webservice-using-proxies
    SOAP
    An Overview of SOAP
    /people/padmankumar.sahoo/blog/2005/02/15/an-overview-of-soap
    JDBC ADAPTER
    http://help.sap.com/saphelp_nw04/helpdata/en/7e/5df96381ec72468a00815dd80f8b63/content.htm
    /people/saravanakumar.kuppusamy2/blog/2005/01/19/rdbms-system-integration-using-xi-30-jdbc-senderreceiver-adapter
    Regards,
    phani
    Reward points if Helpful

  • SOAP Receiver Error: HTTP Error response for SOAP Request

    Hi gurus,
    I'm facing a weird error in File --> PI 7.31 java only --> soap receiver proxy.
    The other interfaces runs well. just one get the the following error:
    Exception caught by adapter framework: java.io.IOException: Error receiving or parsing request message: java.io.IOException: HTTP Error response for SOAP request or invalid content-type.
    I check the payload and test in the inbound proxy. on error.
    Any hints?
    Thanks a lot!
    regards
    Christine

    Hello Christine,
    I faced the same issue,
    You can use the beans below to overcome the error.
    And charset should be utf-8

  • SOAP adapter error: invalid content type for SOAP: TEXT/HTML.

    Dear SAP experts,
    Need your help again here.
    Currently, i am getting this specific error in my RWB logs.
    The connection is from SAP XI going to Trading Partner via SOAP adapter.
    The specific error is:
    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: java.io.IOException: invalid content type for SOAP: TEXT/HTML.
    I've already searched on what is causing the issue and it seems majority of the information is that, the error might be due to incorrect/wrong URL that was set in the configurations in the SAP XI communication channel.
    Can you confirm this one?
    DO you have any thoughts on this error?
    Please help.
    Thank you very much!
    Fred

    Hi Freddiesan,
    First of all, test your URL acessing it from SAP PI server's local browser to check firewall and router settings.
    If it works, check these blogs:
    Regards,
    Rogério
    Edited by: Rogério Tambellini on Jul 3, 2009 12:52 PM

  • SOAP: call failed: invalid content type for SOAP: TEXT/HTML

    Scenario: Idoc(R3) - -> XI (BPM) <-> webservice
    I have tested the web service through a browser and XMLSPY, and this works.
    There are no firewall issues.
    I have used the TCPGateway to trace the messages. I receive the following error:Connection refused: connect
    What is the problem?
    Why can I call the web service through a browser/XMLSPY and not through the SOAP adapter?
    Best Regards
    Niels Færch

    Ref: /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009
    First verify your address. it can cause the invalid content type for SOAP: TEXT/HTML error
    <i>I have used the TCPGateway to trace the messages. I receive the following error:Connection refused: connect</i>
    >> also check if your network has a proxy. in that case you wud need to provide that details in your SOAP adapter

  • Response struct of SOAP in particular case (in 9i AS Soap Server)

    In Oracle9i AS Soap Server,
    If the method is void type, which type of response struct will
    be sent from 9i Soap Server?
    1) Omit the response struct.
    2) Return a response struct with dummy value.

    Thanks for your response, Sandro.
    The webservice which I use has been modified. Now if it throws an exception, I receive well a SOAP message :
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
       <soap-env:Body>
          <soap-env:Fault>
             <faultcode>soap-env:Client</faultcode>
             <faultstring xml:lang="en">ALREADY_EXISTS</faultstring>
             <detail>
                <n0:Z_WS_CREATE_WAGON.Exception xmlns:n0="urn:sap-com:document:sap:rfc:functions">
                   <Name>ALREADY_EXISTS</Name>
                   <Text>Virus scan profile /SIHTTP/HTTP_UPLOAD is not active</Text>
                   <Message>
                      <ID>VSCAN</ID>
                      <Number>033</Number>
                   </Message>
                </n0:Z_WS_CREATE_WAGON.Exception>
             </detail>
          </soap-env:Fault>
       </soap-env:Body>
    </soap-env:Envelope>
    About the exception managing :<br>
    - In my integration process, I include the send step in a block, with property <i>Exceptions</i> =
    ALREADY_EXISTS
    - In the send step, in property <i>Exceptions</i>, I add <i>System Error</i>
    ALREADY_EXISTS
    - I insert an <i>Exception Branch</i> in the new block, <i>Exception Handler</i>
    ALREADY_EXISTS
    Is that correct?
    Do I need to use Fault messages?
    And how do I get the error message ?
    <br>In transaction ST22, I have no dump.
    <br>If it is a problem of exception managing, why do I get also the error (<i>com.sap.aii.af.ra.ms.api.DeliveryException: invalid content type for SOAP: TEXT/HTML</i>) when all is right in the web service call ?
    Regards,
    Laurence

  • SOAP BODY data to be Put into SOAP Header

    Hi All,
    Could you kindly help me out in this issue?
    Basically our Requirement is to send the UserID and Password stored in
    the R/3 system to the 3rd Party Server as a part of the SOAP Header .
    Presently I am using a Message Interface which takes the parameters
    UserID and Password and hence its placing them in the SOAP BODY which in
    turn in resulting in Rejection of the data sent being us. So I guess we
    have to do some take out these parameters from Message Interface and
    try out something else.
    So Could you help us out in this issue since we are stuck  and hence not
    able to proceed any further.
    Here are some Details :
    Here is the extract from the XML File:
    A) Format in XI
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns1:DPSrequestToken xmlns:ns1="http://tempuri.org/message/">
    - <Username>
      <Username>ANYAGENT</Username>
      <Password>p2ssword</Password>
      </Username>
    - <DPSrequestToken>
      <version>1</version>
      <vendorID>0142</vendorID>
      </DPSrequestToken>
      </ns1:DPSrequestToken>
    B) The way the file needs to be sent to the 3rd party server
    <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: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>
            <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <wsse:UsernameToken>
                    <wsse:Username>ANYAGENT</wsse:Username>
                    <wsse:Password>p2ssword</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
    </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <m:DPSrequestToken xmlns:m="https://tpvs.hmrc.gov.uk/dpsauthentication">
                   <m:version>1</m:version>
                   <m:vendorID>your 4 digit vendorID</m:vendorID>
              </m:DPSrequestToken>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Basically as mentioned above
      <Username>ANYAGENT</Username>
      <Password>p2ssword</Password> ,Tokens should be sent in the SOAP
    Header which is now being sent in the Body and hence causing problems.
    Do get back to me in case you need any clarifications on this issue.
    Best Regards,
    Chandan
    Message was edited by: Chandan A C

    see this --> page 2
    HTTP Adapter error.
    Rgds

Maybe you are looking for