cancel
Showing results for 
Search instead for 
Did you mean: 

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

former_member188019
Active Participant
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

baskar_gopalakrishnan2
Active Contributor
0 Kudos

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

Yes, if you dont change the data structure.

>>3.is there any advantage of using "publish in SR" option

You can publish the web service in service registry . So when a client invoke webservice the call is routed to registry to check whether the registered service is the requesting service from the client and then call is routed to the webservice. Even without service registry also you can host the webservice. It is not mandatory. Search SDN for service registry learning.

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

Dont understand the meaning of customize... But, you can just change the host name if you move to different environment and provide that WSDL URL to the client. Or WSDL Itself has all the ingredients of your Web Service. You dont need to give WSDL URL again... Search for address:location tag in WSDL and you will find the WSDL URL.

Also see my reply in this thread for how to create WSDL too.

Hope this helps

Answers (3)

Answers (3)

Former Member
0 Kudos

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&r...',

          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

Former Member
0 Kudos

Two links we can use if we are using some external tool to test Web Service like SOAP UI.

First the generated one form ID other as per the SOAP channel configuration help page on SCN.

http://<PI HOST name>:<PORT>/sap/xi/engine?type=entry&version=3.0&Sender.Service=<Sender Service Name>&Interface=<Namespace>^<Interface Name>&QualityOfService=<Quality of Service>

With default suggested post as '8000' in above link it will skip the sender channel and reach to integration engine.

So if you want to use channel then use below link

http://<PI HOST name>:<PORT as what comes in IFR page>/XISOAPAdapter/MessageServlet?channel=<Party>:<Service Name>:<Channel Name>

Former Member
0 Kudos

Hi Madhu,

please use follwoing links it will resolve your problem..

the URL format is fix..

Thanks,

Bhupesh

Former Member
0 Kudos

Yes, the URL format is fix. and it is simple.

http://host:HTTPPort/XISOAPAdapter/MessagingServlet?channel=party:sendersystem:CC_sender

in above URL provide your sender service componenet name insted of sendersystem.

and provide SOAP sender communication channel name in place of CC_sender

provide your PI system host and http name inplace of host and https and use this.. it will work..

thanks,

Bhupesh