Is it possible to call BI Publisher Web Service through PL/SQL?
hi all,
i'm trying to find a way to run/schedule a report for my application. i'm using another platform for the client front-end form other than oracle but was wondering if i could possibly call the webservice using PL/SQL. PL/SQL meaning stored procedure in the database.
thanks
allen
Edited by: A.Sandiego on Feb 16, 2009 11:34 AM
hi,
i'm trying to study on how to use the oracle bi publisher using another client application aside from oracle. the client application is custom and uses a .Net framework. unfortunately, i am not familiar with how .Net sends requests to oracle bi publisher so i was thinking that may be i can just create oracle pl/sql stored procedures that can send this requests over to bi publisher.
p.s. when you said concurrent manager, i'm not sure if you are referring to oracle apps concurrent manager but if you are, unfortunately i won't be using oracle apps with bi publisher.
thanks
allen
Similar Messages
-
How to call an ODI web service through PL/SQL
Hi All,
Can we call an ODI web service through PL/SQL. If we can, can you please provide me info/examples/links on how to accomplish this task ?
Any information will help me and my team.
Am I required to use UTL_HTTP ?
Thanks,
Amer
Edited by: Rooney on Nov 6, 2012 9:58 AMHi,
Take a look at this :
http://www.business-intelligence-quotient.com/?p=1466 -
Calling BI Publisher Web Service from pl/sql
I am trying to call the BI publisher web service from pl/sql.
I get the following response back
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
<faultstring>no SOAPAction header!</faultstring>
<detail>
<ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">my-obiee</ns2:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
The bit that concerns me is
<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode>
<faultstring>no SOAPAction header!</faultstring>
The code that I used to call this is
DECLARE
req utl_http.req;
resp utl_http.resp;
value VARCHAR2(1024);
p_data_type varchar2(4000):= 'application/soap+xml;';
p_data_in VARCHAR2(3000) :=
'<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pub="http://xmlns.oracle.com/oxp/service/PublicReportService">
<soapenv:Body>
<pub:scheduleReport xmlns:pub="http://xmlns.oracle.com/oxp/service/PublicReportService">
<scheduleRequest>
<deliveryRequest>
<ftpOption>
<ftpServerName>ino-ed-oel2.inoapps.com</ftpServerName>
<ftpUserName>*******</ftpUserName>
<ftpUserPassword>*****</ftpUserPassword>
<remoteFile>/opt/UAT/db/tech_st/11.1.0/employees.pdf</remoteFile>
</ftpOption>
</deliveryRequest>
<reportRequest>
<attributeFormat>pdf</attributeFormat>
<reportAbsolutePath>http://10.100.100.44:9704/xmlpserver/~administrator/XXXXXXX.xdo</reportAbsolutePath>
<parameterNameValues>
<item>
<name>dname</name>
<multiValuesAllowed>false</multiValuesAllowed>
<values>
<item>153002</item>
</values>
</item>
</parameterNameValues>
</reportRequest>
<userJobName>BILL</userJobName>
</scheduleRequest>
<userID>******</userID>
<password>******</password>
</pub:scheduleReport>
</soapenv:Body>
</soapenv:Envelope>';
BEGIN
--utl_http.set_proxy('proxy.my-company.com', 'corp.my-company.com');
req := utl_http.begin_request('http://10.100.100.44:9704/xmlpserver/services/PublicReportService?wsdl', 'POST');
utl_http.set_header(req, 'content-type', p_data_type);
utl_http.set_header(req, 'content-length', length(p_data_in));
utl_http.set_header(req, 'User-Agent', 'Mozilla/4.0');
utl_http.write_text(req, p_data_in);
resp := utl_http.get_response(req);
dbms_output.put_line ('status code: ' || resp .status_code);
dbms_output.put_line ('reason phrase: ' || resp .reason_phrase);
LOOP
utl_http.read_line(resp, value, TRUE);
dbms_output.put_line(value);
END LOOP;
utl_http.end_response(resp);
EXCEPTION
WHEN utl_http.end_of_body THEN
utl_http.end_response(resp);
END;
Any help would be greatly receivedI had the same problem this morning. You need to add a line to the HTTP header to declare a value for SOAPAction.
You can set this as an empty string, but for some reason it is required.
Try adding this among your header declarations:
utl_http.set_header(req, 'SOAPAction', ''); -
New to Web Services - need to call a HTTPS web service from PL/SQL
I am new to Web Services and need to call HTTPS web service from PL/SQL program. I am using 10g Database.
I have been reading there are 2 options -
1. UTL_HTTP - with this package its possible to call HTTPS web services
2. UTL_DBWS
Questions -
1. Is it possible to call a HTTPS web service using UTL_DBWS ? I have not been able to find any information on it.
2. Can someone point me to UTL_HTTP and UTL_DBWS examples calling a HTTPS web service ?
3. The HTTPS web service that I need to call needs username/password to connect - how will I incorporate this in the pl/sql code ?
Appreciate the help.
Cheers,
newWebServicesUserHi,
1. UTL_DBWS not work for https from what I understand
2. Here is a sample example:
[http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php#]
Be careful, you must change http/1.0 IN 1.1 inside package SOAP_API.
Here is an example for a prime number where the SOAP message is already construct:
CREATE OR REPLACE procedure test_ws_2
IS
http_req utl_http.req;
http_resp utl_http.resp;
request_env varchar2(32767);
response_env varchar2(32767);
begin
-- Set proxy details if no direct net connection.
UTL_HTTP.set_proxy('http://<USER>:<PASS>@10.0.2.21:8070', NULL);
UTL_HTTP.set_persistent_conn_support(TRUE);
request_env:='<?xml version="1.0" encoding="utf-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">'||
'<SOAP-ENV:Body><GetPrimeNumbers xmlns="http://microsoft.com/webservices/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">'||
'<max xsi:type="xsd:int">10</max>'||
'</GetPrimeNumbers></SOAP-ENV:Body></SOAP-ENV:Envelope>';
dbms_output.put_line('Length of Request:' || length(request_env));
dbms_output.put_line ('Request: ' || request_env);
http_req := utl_http.begin_request('http://www50.brinkster.com/vbfacileinpt/np.asmx','POST', utl_http.HTTP_VERSION_1_1);
utl_http.set_header(http_req, 'Content-Type', 'text/xml; charset=utf-8');
utl_http.set_header(http_req, 'Content-Length', length(request_env));
utl_http.set_header(http_req, 'SOAPAction', '"http://microsoft.com/webservices/GetPrimeNumbers"');
utl_http.write_text(http_req, request_env);
dbms_output.put_line('');
http_resp := utl_http.get_response(http_req);
dbms_output.put_line('Response Received');
dbms_output.put_line('--------------------------');
dbms_output.put_line ( 'Status code: ' || http_resp.status_code );
dbms_output.put_line ( 'Reason phrase: ' || http_resp.reason_phrase );
utl_http.read_text(http_resp, response_env);
dbms_output.put_line('Response: ');
dbms_output.put_line(response_env);
utl_http.end_response(http_resp);
end test_ws_2;
Otherwice for testing url, i recommand you to use that function: Re: Error using UTL_HTTP over HTTPS
it's a verry helpful function when you have an error.
wrote:
When testing using UTL_HTTP, you MUST ensure that you open a new session after importing the SSL certificates into your Wallet,
as I've learned (the hard way) that existing sessions point to the wallet contents that were present when the session was opened.
If you don't realise/know this, it can cause a lot of additional frustration during testing, when you keep getting the ORA-29024 exception AFTER
you've imported the SSL certificates................. ;) 3. i think you can use that after the begin_request but not sure :
UTL_HTTP.set_authentication(r => http_req,
username => ,
password => ,
scheme => ,
for_proxy => );
Edited by: Malebodja on Oct 22, 2009 6:53 AM
Edited by: Malebodja on Oct 22, 2009 6:55 AM -
Is it possible to call an external web service using ABAP?
Hi~~
I wonder that is possible to use an external web service in SAPGUI using ABAP without PI ( Process Integraion ).
The external web service means the service that is developed by web-language like ASP.NET.
Thank you.hi,
i'm trying to study on how to use the oracle bi publisher using another client application aside from oracle. the client application is custom and uses a .Net framework. unfortunately, i am not familiar with how .Net sends requests to oracle bi publisher so i was thinking that may be i can just create oracle pl/sql stored procedures that can send this requests over to bi publisher.
p.s. when you said concurrent manager, i'm not sure if you are referring to oracle apps concurrent manager but if you are, unfortunately i won't be using oracle apps with bi publisher.
thanks
allen -
Calling BI Publisher Web Services from APEX
Hi,
Has anyone been able to run a BI Publisher report from APEX using the Web Service interface provided by BI Publisher?
I have created Web Service Reference in APEX using:
http://<host>:<port>/xmlpserver/services/PublicReportService?wsdl
I have then created a page rendering process that calls the web service, in particular calling the runReport operation.
When a try and run the page, I get the following error:
"ORA-20001: soapenv:Server.userExceptionjava.lang.NullPointerException"
Basically I want to be be able to call the BI Pub report and view the output straight away.
Appreciate any help.
Cheers,
MattHello,
I am using Jason's flex_ws_api and I have built an application that uses the BI Publisher web services to runReports. My service request looks like this (example)
<pre>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pub="http://xmlns.oracle.com/oxp/service/PublicReportService">
<soapenv:Header/>
<soapenv:Body>
<pub:runReport>
<pub:reportRequest>
<pub:attributeFormat>pdf</pub:attributeFormat>
<pub:attributeLocale></pub:attributeLocale>
<pub:attributeTemplate>New Template 1</pub:attributeTemplate>
<pub:flattenXML>1</pub:flattenXML>
<pub:parameterNameValues/>
<pub:reportAbsolutePath>/~rdpatric/Training/whoami/whoami.xdo</pub:reportAbsolutePath>
<pub:reportData></pub:reportData>
<pub:reportDataFileName></pub:reportDataFileName>
<pub:sizeOfDataChunkDownload>10000</pub:sizeOfDataChunkDownload>
</pub:reportRequest>
<pub:userID>user</pub:userID>
<pub:password>password</pub:password>
</pub:runReport>
</soapenv:Body>
</soapenv:Envelope>
</pre>
Obviously you would want to make a lot of these things variables...this is just an example...also sizeOfChunkDownload wasn't working for me at -1...idk...maybe it was something else...
Also if you use the flex_ws_api...you need to specify the namespace for your xpath statement ie.' xmlns="http://..."'
I am currently working on getting this working with the 'inSession' webservices as we have BI Pub set up SSO and APEX set up SSO so i need to be able to call the web services inSession...only problem is ssoCreateSession returns a 500 error and no xml...entered a TAR for this...sorry to digress. Use the above code and you should be able to get the runReport working. -
Calling and Publishing Web Service
Hi, I am new to Web Services in SAP. Got 2 questions regarding this:
1. How do we call a Web Service from SAP?
2. If I want to publish a Web Service in SAP ECC6, what are the required steps?
Sorry, haven't had much luck with my searches. Thanks in advance!You can check the following url/documentation to get an idea of how the Web Services work in SAP:
[Administration of the Internet Communication Manager|http://help.sap.com/erp2005_ehp_04/helpdata/EN/b8/2a8d65be7eee4eb66067f8a33d1c8b/frameset.htm]
Also check [Internet Communication Framework|http://help.sap.com/erp2005_ehp_04/helpdata/EN/36/020d3a0154b909e10000000a114084/frameset.htm].
Nelis -
Calling a HTTPS Web Service through a proxy
Hi All,
I am trying to make a web service proxy for a service runnig on the weblogic server over https connection. While I am configuring the proxy I am getting an error saying that Unable to tunnel through proxy. Proxy returns "HTTP/1.1 403 Tunnel or SSL Forbidden"
Any ideas why I am getting this or how it can be resolved?
Thanks in advanceHi Sandeep,
I will add some more details here to add clarity,
My web service is running over SSL (one-way) on SOA server managed by weblogic server. I am trying to create a proxy for it in jdeveloper. I can access the WSDL document through the browser at the following link:
https://10.227.32.125:8002/soa-infra/services/default/Test_OWSM_11g/bpelprocess1_client?WSDL
Now in the second step of creating of proxy (in jdeveloper) i am mentioning the above URL but getting an error saying that no WSDL document found at this location.
Any ideas where I might be goin wrong -
BIP 11g scheduler web service through pl/sql
Hi,
I am trying to schedule a BIP 11g report through a pl/sql wrapper. I am running the same and not getting any response. I only get the following error :
anonymous block completed
status code: 500
reason phrase: Internal Server Error.
I am attaching the code piece. It would be nice if someone can guide me as to where the code is going wrong.
set serveroutput on;
Declare
P_DATA_TYPE VARCHAR2(4000);
p_data_in varchar2(5000);
REQ UTL_HTTP.REQ;
RESP UTL_HTTP.RESP;
BEGIN
p_data_in :=
'<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v2="http://xmlns.oracle.com/oxp/service/v2">
<soapenv:Body>
<v2:scheduleReport>
<v2:scheduleRequest>
<v2:deliveryChannels>
<v2:EMailDeliveryOption>
<v2:emailFrom>******</v2:emailFrom>
<v2:emailServerName>******</v2:emailServerName>
<v2:emailSubject>Test BIP webservice</v2:emailSubject>
<v2:emailTo>******</v2:emailTo>
</v2:EMailDeliveryOption>
</v2:deliveryChannels>
<v2:reportRequest>
<v2:attributeFormat>pdf</v2:attributeFormat>
<v2:reportAbsolutePath>/General Ledger/Reports/****** YYY ZZZ.xdo</v2:reportAbsolutePath>
</v2:reportRequest>
<v2:userJobName>BIPTESTWS</v2:userJobName>
</v2:scheduleRequest>
<v2:userID>******</v2:userID>
<v2:password>******</v2:password>
</v2:scheduleReport>
</soapenv:Body>
</soapenv:Envelope>';
REQ := UTL_HTTP.BEGIN_REQUEST('http://XXXX:7001/xmlpserver/services/v2/ScheduleService?wsdl', 'POST','HTTP/1.1');
utl_http.set_header(req, 'content-type', 'text/xml');
UTL_HTTP.SET_HEADER(REQ, 'content-length', LENGTH(P_DATA_IN));
utl_http.set_header(req, 'SOAPAction', '');
utl_http.write_text(req, p_data_in);
resp := utl_http.get_response(req);
dbms_output.put_line ('status code: ' || resp.status_code);
dbms_output.put_line ('reason phrase: ' || resp.reason_phrase);
utl_http.end_response(resp);
EXCEPTION
WHEN utl_http.end_of_body THEN
UTL_HTTP.END_RESPONSE(RESP);
END;Hi,
IS there anyone who has previously worked on the webservices and can help me a bit. -
Calling web services from PL/SQL
Hi,
We have a requirement where we need to call a web services from PL/SQL.
I believe we have a PL/SQL API that allows you to consume external web services.
I was looking for other possible options too to consume web Service from PL/SQL.
Can any one suggest the other possible options , and which option is best to consume web service.
Thanks
ABAB,
I didn't realize you cannot attach documents to your post. You will have to provide me with an email address that I can send the documents to. They are a little rough (ie not commented etc) but they do illustrate the point. The basic idea is to build up the payload of the soap envelope using pl/sql. Meaning as I loop through the cursor I use each record in the cursor to build an xml string. This string of xml becomes the payload of the soap message. This could also be done using xml functionality provided by the db meaning xmlelement, xmlforest etc. The issue I ran into was the size of the message. That is why I elected to build the xml message by string concatenation as I moved through the cursor.
Ryan -
Calling secured web service from Pl SQL
Hi
I am trying to call a secured web service from pl/sql using utl_http.
Is there a sample pl/sql program that i can refer to call a secured web service.
sample soap header that am trying to acheive.
<soap:Header>
<wsa:Action>http://myactaction</wsa:Action>
<wsa:MessageID>uuid:asdfadrewrwqr</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://myact</wsa:To>
<wsse:Security soap:mustUnderstand="1">
<wsse:UsernameToken wsu:Id="SecurityToken-321321">
<wsse:Username>mordfsafsdae</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">werwqrewrwe</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soap:Header>
Thanks a ton in advanceHi,
On way we can call a web service is to pass the Web Service URL to UTL_HTTP package:
Sample Web Service URL
===================
lv_url :=
'http://67.97.189.151:8888/plsqlsample/dbfunc?invoke=placeOrder'
|| '&'
|| 'param0=1'
|| '&'
|| 'param1=1'
|| '&'
|| 'param2=1';
Sample Call using UTL_HTTP
=====================
SELECT UTL_HTTP.request (lv_url)
INTO lv_result
FROM DUAL;
Thank you.
Regards,
Balu -
Error in Calling Oracle Web Service through Eclipse-indigo
Hi All,
I'm getting an below error when trying to call my oracle web service through Eclipse-indigo.
Error:-
IWAB0135E An unexpected error has occurred.
502
Bad Gateway
Steps followed to create oracle web service and invoke WS :-
Followed link
http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/xdb_web_services.htm
which explans how to create oracle web service.
1. Configure HTTP Access
2. Configure the ORAWSV Servlet
3. created user 'test' and wrote simple procedure getdescription which will return name for request id.
4. granted all privilages to user.
5. The orawsv servlet automatically generates a WSDL file.
6. trying to call WS through Eclipse-indigo, but i get error.Trying to test via PL/SQL first via (see the following url for more info: Re: Using utl_dbws to call web service ) for example something like the following:
SQL> set serveroutput on
SQL> --
SQL> def USERNAME=DBNWS
SQL> --
SQL> DECLARE
2 V_SOAP_REQUEST XMLTYPE := XMLTYPE(
3 '<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">
4 <SOAP-ENV:Body>
5 <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/&USERNAME/GET_SQRT">
6 <m:INPUT_VALUE-NUMBER-IN>2</m:INPUT_VALUE-NUMBER-IN>
7 </m:SNUMBER-GET_SQRTInput>
8 </SOAP-ENV:Body>
9 </SOAP-ENV:Envelope>');
10 V_SOAP_REQUEST_TEXT CLOB := V_SOAP_REQUEST.getClobVal();
11 V_REQUEST UTL_HTTP.REQ;
12 V_RESPONSE UTL_HTTP.RESP;
13 V_BUFFER VARCHAR2(1024);
14 BEGIN
15
16 V_REQUEST := UTL_HTTP.BEGIN_REQUEST(URL => :URL, METHOD => 'POST');
17 UTL_HTTP.SET_HEADER(V_REQUEST, 'User-Agent', 'Mozilla/4.0');
18 V_REQUEST.METHOD := 'POST';
19 UTL_HTTP.SET_HEADER (R => V_REQUEST, NAME => 'Content-Length', VALUE => DBMS_LOB.GETLENGTH(V_SOAP_REQUEST_TEXT));
20 UTL_HTTP.WRITE_TEXT (R => V_REQUEST, DATA => V_SOAP_REQUEST_TEXT);
21
22 V_RESPONSE := UTL_HTTP.GET_RESPONSE(V_REQUEST);
23 LOOP
24 UTL_HTTP.READ_LINE(V_RESPONSE, V_BUFFER, TRUE);
25 DBMS_OUTPUT.PUT_LINE(V_BUFFER);
26 END LOOP;
27 UTL_HTTP.END_RESPONSE(V_RESPONSE);
28 EXCEPTION
29 WHEN UTL_HTTP.END_OF_BODY THEN
30 UTL_HTTP.END_RESPONSE(V_RESPONSE);
31 END;
32 /
old 5: <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/&USERNAME/GET_SQRT">
new 5: <m:SNUMBER-GET_SQRTInput xmlns:m="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT">
<?xml version="1.0" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GET_SQRTOutput xmlns="http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT">
<RETURN>1.41421356237309504880168872420969807857</RETURN>
</GET_SQRTOutput>
</soap:Body>
</soap:Envelope>
PL/SQL procedure successfully completed.
SQL> set serveroutput on
SQL> --In the example give above the WSDL info should be seen via http://xmlns.oracle.com/orawsv/DBNWS/GET_SQRT?wsdl -
Error while calling .svc web service from pl/sql using utl_dbws
Hello Folks,
I am calling a .svc web service from pl/sql using utl_dbws and encountering the following error
javax.xml.rpc.soap.SOAPFaultException: The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
Can you help me find what am I doing wrong?
Thanks
RkHi,
Here are the details
1. What version?
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
2. What error message ... we need the full and complete error stack not your interpretation of it.
ORA-29532: Java call terminated by uncaught Java exception: javax.xml.rpc.soap.SOAPFaultException: The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Messag
3. "I am calling means what?" We need the full and complete statement showing the values of all parameters.
The input to the web-service is a xmltype containing address information and the web-service returns a string
CREATE OR REPLACE FUNCTION get_id
RETURN VARCHAR2
AS
l_service UTL_DBWS.service;
l_call UTL_DBWS.CALL;
l_wsdl_url VARCHAR2 (32767);
l_namespace VARCHAR2 (32767);
l_service_qname UTL_DBWS.qname;
l_port_qname UTL_DBWS.qname;
l_operation_qname UTL_DBWS.qname;
l_xmltype_in SYS.XMLTYPE;
l_xmltype_out SYS.XMLTYPE;
l_return VARCHAR2 (32767);
BEGIN
l_wsdl_url := 'http://test.com/test.svc?wsdl';
l_namespace := 'http://test.org/';
l_service_qname := UTL_DBWS.to_qname (l_namespace, 'SName');
l_port_qname := UTL_DBWS.to_qname (l_namespace, 'BasicHttpBinding_ISName');
l_operation_qname := UTL_DBWS.to_qname (l_namespace, 'Iden');
l_service :=
UTL_DBWS.create_service
(wsdl_document_location => urifactory.geturi
(l_wsdl_url),
service_name => l_service_qname
l_call :=
UTL_DBWS.create_call (service_handle => l_service,
port_name => l_port_qname,
operation_name => l_operation_qname
l_xmltype_in :=
SYS.XMLTYPE
('<IdenRequest xmlns:i="http://www.w3.org/XMLSchema-instance" xmlns="http://test.org/SNameIden.WCFService">
<address />
<zip>12345</zip>
<state>AA</state>
<street>W Test </street>
</address>
</IdenRequest>'
l_xmltype_out :=
UTL_DBWS.invoke (call_handle => l_call,
request => l_xmltype_in);
UTL_DBWS.release_call (call_handle => l_call);
UTL_DBWS.release_service (service_handle => l_service);
l_return := l_xmltype_out.EXTRACT ('//Iden/text()').getstringval();
RETURN l_return;
END;
/ -
SR: Calling Web Services from PL/SQL gives http 500 errors
Hi, people from Oracle Support sent me to this forum.
I'm trying to call the Calendar Web Services from PL/SQL using the utl_http package, but I'm getting http-500 errors.
I'm using the example from http://www.oracle.com/technology/tech/webservices/htdocs/samples/dbwebservice/DBWebServices_PLSQL.html
Here's the code
procedure showHtml
as
req soap_rpc.request;
resp soap_rpc.response;
BEGIN
req := soap_rpc.new_request('cwsl:NoOp',
'xmlns:cwsl="http://www.oracle.com/WebServices/Calendaring/1.0/"');
resp := soap_rpc.invoke(req,
'http://nllx004.nl.oracle.com/ocws-bin/ocas.fcgi',
dbms_output.put_line(resp.doc.getStringVal());
END;
Can anyone help?I am new to web services and am having trouble getting the utl_http.set_header call to work using pl/sql. listed below is the code.
CREATE OR REPLACE PACKAGE BODY adm_iModules_test
AS
NAME: Admissions iModules testing program
PURPOSE:
Ver Date Author Description
REVISIONS:
1.0 01/04/08 Julie Michael 1. Created this package body.
PROCEDURE adm_iModules_test_output
IS
--cursor to select data to populate output file
CURSOR c_iModules_main
IS
SELECT DISTINCT spriden_id sprid_id,
spriden_pidm sprid_pidm,
spriden_last_name sprid_last,
spriden_first_name sprid_first,
spriden_MI sprid_mid,
spriden_create_date sprid_create_date,
spriden_activity_date sprid_activity_date,
spbpers_pidm pers_pidm,
spbpers_name_prefix prefix,
spbpers_name_suffix suffix,
spbpers_dead_ind deceased_ind,
spbpers_dead_date deceased_date,
spbpers_birth_date, --added birth date
spbpers_sex, --added gender
goremal_pidm emal_pidm,
goremal_email_address email_address,
saradap_pidm app_pidm,
zzrimod_member_id imod_id,
gobtpac_external_user user_id
FROM spriden,
spbpers,
goremal,
saradap,
zzrimod,
gobtpac
WHERE spriden_pidm = spbpers_pidm
AND spriden_change_ind IS NULL
AND spriden_pidm = goremal_pidm
AND goremal_emal_code = 'PERS'
AND goremal_preferred_ind = 'Y'
AND spriden_pidm = saradap_pidm
AND spriden_pidm = 120116
AND spriden_pidm = gobtpac_pidm
AND spriden_pidm = zzrimod_pidm(+)
AND goremal_preferred_ind = 'Y'
AND saradap_term_code_entry in ('200810','200820','200830');
v_record VARCHAR2 (32000) := null;
v_record_counter NUMBER := 0;
f_iModules_output_test UTL_FILE.file_type;
f_iModules_filename_test VARCHAR2 (50) := 'Adm_iModules_Test.TXT';
f_iModules_dir_test VARCHAR2 (100) := 'TMP';
v_separator VARCHAR2 (50) := ',';
v_id VARCHAR2 (90) := '';
v_fname VARCHAR2 (40) := '';
v_lname VARCHAR2 (40) := '';
v_user VARCHAR2 (90) := '';
v_login VARCHAR2 (100) := '';
v_password VARCHAR2 (100) := '';
-- v_link VARCHAR2 (32767) := 'http://imodules.com/Web%20Services/';
--the below item 'http://admin.imodules.com - was https://admin.imodules.com
v_link VARCHAR2 (32767) := 'http://admin.imodules.com/ws_10/MemberQuery.asmx?WSDL';
v_non_existing_ids VARCHAR2 (100) := '"false"';
v_style VARCHAR2 (5) := '"1"';
v_imod_member_id VARCHAR2 (100) := '';
v_spriden_first_name VARCHAR2 (60) := '';
req Utl_Http.req; --for posting
resp Utl_Http.resp; --for posting
v_msg VARCHAR2(80); --for posting
H_Name VARCHAR2(255); --for posting
H_Value VARCHAR2(1023); --for posting
v_data_xml VARCHAR2(10000);
BEGIN
DBMS_OUTPUT.ENABLE(1000000);
f_iModules_output_test := UTL_FILE.fopen (f_iModules_dir_test, f_iModules_filename_test, 'w',32767);
v_record := '';
--needed for posting
-- Utl_http.set_proxy(proxy => 'xxx.yyy.com',
-- no_proxy_domains => 'xxx.com');
req := Utl_Http.begin_request(url => v_link,
method => 'POST');
-- FOR v_iModules2 IN c_iModules_main
-- LOOP
-- v_record_counter := v_record_counter + 1;
-- END LOOP;
-- v_record := 'DUQ'||','||v_record_counter||','||to_char(SYSDATE,'mm/dd/yyyy');
UTL_FILE.put_line (f_iModules_output_test, v_record, false);
v_record := null;
FOR v_iModules IN c_iModules_main
LOOP
v_id := v_imodules.sprid_id;
v_fname := v_imodules.sprid_first||'test';
v_lname := v_imodules.sprid_last;
v_user := '"'||v_imodules.email_address||'"';
v_imodules.imod_id := '29';
v_imod_member_id := '"'||v_imodules.imod_id||'"';
v_spriden_first_name := '"SPRIDEN_FIRST_NAME"';
v_login := '"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"';
v_password := '"xxxxxxxxxxxxxxxxxxxxxxxx"';
v_record :='<?xml version="1.0" encoding="utf-8"?>'||
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'||' '||
'xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'||
'<soap:Body>'||'<Update xmlns:m='||v_link||'>'||'<AUTHENTICATION login='||v_login||' '||
'password='||v_password||' '||'addNonExistingIDs='||v_non_existing_ids||' '||'style='||
v_style||'/>'||'<MemberInformation ZZRIMOD_MEMBER_ID='||v_imod_member_id||'>'||
'<SPRIDEN_FIRST_NAME>'||v_fname||'</SPRIDEN_FIRST_NAME>'||'</MemberInformation>'||'</Update>'||
'</soap:Body></soap:Envelope>';
-- v_record := v_record := v_record||'<Update xmlns:m='||v_link||'>'||'<AUTHENTICATION login='||v_user||'>'||' '||
-- 'password='||v_password||' '||'addNonExistingIDs='||v_non_existing_ids||' '||'style='||
-- v_style||'/>'||'<MemberInformation ZZRIMOD_MEMBER_ID='||v_imod_member_id||' '||
-- 'column='||'"SPRIDEN_FIRST_NAME"'||' '||'newValue='||v_fname||'/>'||'</Update>';
dbms_output.put_line('code: '||v_record);
--v_record := v_record||v_separator||v_id||v_separator||v_name||v_separator||v_email;
--Http posting calls
Utl_Http.set_header(r => req,
name => 'Content-Type',
value => 'text/xml');
Utl_Http.set_header(r => req,
name => 'Content-Length',
value => to_char(length(v_record)) );
--JAM 03/25/08 - added to accomodate the missing soap action error
Utl_Http.set_header(r => req,
name => 'SOAPAction',
value => 'http://admin.imodules.com/ws_10/MemberQuery.asmx?WSDL');
Utl_Http.set_header(r => req,
name => 'MessageType',
value => 'CALL');
-- Utl_Http.set_authentication(r => req,
-- username => 'zzz',
-- password => 'ppppp',
-- scheme => 'Basic',
-- for_proxy => FALSE);
Utl_Http.write_text(r => req,
data => v_record);
resp := Utl_Http.get_response(r => req,
return_info_response => TRUE);
DBMS_OUTPUT.put_line('Status Code: ' || resp.status_code);
DBMS_OUTPUT.put_line('Reason Phrase: ' || resp.reason_phrase);
dbms_output.put_line('testing');
FOR i IN 1 .. Utl_Http.get_header_count(r => resp)
LOOP
Utl_Http.get_header(r => resp,
n => i,
name => H_Name,
value => H_Value);
--DBMS_OUTPUT.put_line( ... );
END LOOP;
BEGIN
LOOP
Utl_Http.read_text(r => resp, DATA => v_msg);
DBMS_OUTPUT.put_line(v_msg);
END LOOP;
EXCEPTION
WHEN Utl_Http.end_of_body THEN
NULL;
END;
Utl_Http.end_response(r => resp);
-- EXCEPTION
-- WHEN Utl_Http.request_failed THEN
-- DBMS_OUTPUT.put_line('Request failed: '||Utl_Http.Get_Detailed_Sqlerrm);
-- WHEN Utl_Http.http_server_error THEN
-- DBMS_OUTPUT.put_line('Http_Server_Error: '||Utl_Http.Get_Detailed_Sqlerrm);
-- WHEN Utl_Http.http_client_error THEN
-- DBMS_OUTPUT.put_line('Client Error: '||Utl_Http.Get_Detailed_Sqlerrm);
-- WHEN others THEN
-- DBMS_OUTPUT.put_line('Others2: '||Utl_Http.Get_Detailed_Sqlerrm);
-- Utl_Http.end_response(r => resp);
-- END;
--End of Htp posting calls
--UTL_FILE.put_line (f_iModules_output_test, v_record, false);
--htp.p('<post>'||v_record||'</post>');
END LOOP;
EXCEPTION
WHEN Utl_Http.request_failed THEN
DBMS_OUTPUT.put_line('Request failed: '||Utl_Http.Get_Detailed_Sqlerrm);
WHEN Utl_Http.http_server_error THEN
DBMS_OUTPUT.put_line('Http_Server_Error: '||Utl_Http.Get_Detailed_Sqlerrm);
WHEN Utl_Http.http_client_error THEN
DBMS_OUTPUT.put_line('Client Error: '||Utl_Http.Get_Detailed_Sqlerrm);
WHEN others THEN
DBMS_OUTPUT.put_line('Others2: '||Utl_Http.Get_Detailed_Sqlerrm);
Utl_Http.end_response(r => resp);
END;
-- close output file
--UTL_FILE.fclose (f_iModules_output_test);
--COMMIT;
/*EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
DBMS_OUTPUT.put_line ('Other Exception:' || SQLERRM);
-- DBMS_OUTPUT.put_line ('Other Exception:' || Utl_Http.Get_Detailed_Sqlerrm);
--COMMIT; */
-- END adm_iModules_test_output;
END adm_iModules_test;
Message was edited by:
user627523 -
Invoking P6 web services using PL/SQL block
Hi Team,
We have requirement like
Oracle jobs will invoke PL/SQL code to authenticate and establish a session with the P6 Web services.
Web service will export Project data from One Primavera database as an XML and copy to common location.
Then this XML project files will be imported into archive database.
Could anyone help me how I can establish sessio between Pl/SQL and P6 webservices?
Please let me know if you need any more information.
Regards,
Santosh
Edited by: SantoshV Singh on Apr 29, 2013 10:09 PMIt will be no different than connecting to any web services through PL/SQL which is pretty hard to do and if you are asking how to do it then you have a steep learning curve ahead of you and not a great deal in the way of good examples out there.
I wouldn't even attempt the approach you suggest. Instead I would probably write a Java application to do it and use your PL/SQL to enqueue a message that routed to the Java application. Then the java application with the Web Services support and P6 client would be easier to do what you want with web services.
Maybe you are looking for
-
Error While Saving into Customizing Request
Dear Experts, I am getting an error message while trying to save any changes in 'Appraisal Catalog'. And when I am transporting it to QAS. no changes are seen (it is not transported) Please let me know how to rectify this error... Error Message: Tabl
-
One page not loading correctly
I am using the latest Muse CC. It seems the problem began when I downloaded the new version of Muse CC. My ads page under portfolio on www.tallguygraphics.com is not uploading correctly to the server since I added new items to the page. I have tried
-
"Invert" button in vignette doesn't work
When trying to apply a vignette fx in the Color FX tab the "Invert" button doesn't do the trick. Any suggestyions what can be happening ? Cheers
-
Inputtax-out puttax- vatpool account
in going for tax caliclation in purchase invoice posting and sales can i use vat pool account commanly for both sales and purchases created ascurrent asset acount group acccount insted of separate input tax account and salestaxpayable account
-
Change UI layout based on panel size
I am looking for a way to adjust the layout of my UI based on the panel's size. For example, two buttons that are above each other until the window height gets small enough that they need to be next to each other instead. Another example would be a s