Web Services with PL/SQL -- Where to get files
The document on how to make web services for PL/SQL stored procedures references serice-config.xml and client-config.xml, but neither of these files are in the links references by the document.
Where do I find those files?
James
The service-config.xml and client-config.xml are config files used by the Webservices assembler, which generates webservices from PL/SQL. JPublisher is used under the hood.
However, the 10.1.3 assembler may run without service-config.xml and client-config.xml. If you can run the build.xml file for the demo, then you are fine.
Similar Messages
-
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', ''); -
Urgent: Calling web service from PL/SQl fails with XML parsing
Hi,
I am trying to call a web service from PL/SQL (using SOAP protocol and UTL_HTTP built in Package).I am using Oracle 9i .I am calling from pl/sql block invoking web service method created in java.
I am getting the below response object as a SOAP protocol, but i couldn't able to parse the SOAP.
Could you please provide the values of FirstName, LastName and ErrorDescription
declare
request_env varchar2(32767);
v_xml XMLTYPE;
l_user_first_name varchar2(100);
l_user_last_name varchar2(100);
l_error_value varchar2(100);
begin
response_env:='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<UserInfoObjResponse xmlns:axis2ns1="http://www.test.com/services">
<axis2ns1:FirstName >First Name Output</axis2ns1:FirstName>
<axis2ns1:LastName>Last Name Output</axis2ns1:LastName>
<axis2ns1:ErrorDescription />
</UserInfoObjResponse>
</soapenv:Body>
</soapenv:Envelope>';
dbms_output.put_line('Length of Request:' || length(response_env));
dbms_output.put_line ('Request: ' || response_env);
v_xml := XMLTYPE(response_env);
-- SELECT EXTRACTVALUE(v_xml, '//UserInfoObjResponse/FirstName') INTO l_user_fast_name varchar2(100); FROM DUAL;
dbms_output.put_line ('l_user_first_name: ' || l_user_first_name);
dbms_output.put_line ('l_user_last_name : ' || l_user_last_name);
dbms_output.put_line ('l_error_value: ' || l_error_value);
end;In Oracle 9i:
SQL> declare
2 response_env varchar2(32767);
3 v_xml XMLTYPE;
4 l_user_first_name varchar2(100);
5 l_user_last_name varchar2(100);
6 l_error_value varchar2(100);
7 begin
8 response_env:='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
9 <soapenv:Body>
10 <UserInfoObjResponse xmlns:axis2ns1="http://www.test.com/services">
11 <axis2ns1:FirstName >First Name Output</axis2ns1:FirstName>
12 <axis2ns1:LastName>Last Name Output</axis2ns1:LastName>
13 <axis2ns1:ErrorDescription />
14 </UserInfoObjResponse>
15 </soapenv:Body>
16 </soapenv:Envelope>';
17
18 dbms_output.put_line('Length of Request:' || length(response_env));
19 -- dbms_output.put_line ('Request: ' || response_env);
20
21 v_xml := XMLTYPE(response_env);
22
23 select EXTRACTVALUE(v_xml,'/*:Envelope/*:Body/*:UserInfoObjResponse/*:FirstName/text()') first_name,
24 EXTRACTVALUE(v_xml,'/*:Envelope/*:Body/*:UserInfoObjResponse/*:LastName/text()') last_name,
25 EXTRACTVALUE(v_xml,'/*:Envelope/*:Body/*:UserInfoObjResponse/*:ErrorDescription/text()') error_description
26 into l_user_first_name, l_user_last_name, l_error_value
27 from dual;
28
29 dbms_output.put_line ('l_user_first_name: ' || l_user_first_name);
30 dbms_output.put_line ('l_user_last_name : ' || l_user_last_name);
31 dbms_output.put_line ('l_error_value: ' || l_error_value);
32 end;
33 /
Length of Request:530
l_user_first_name: First Name Output
l_user_last_name : Last Name Output
l_error_value:
PL/SQL procedure successfully completed.In Oracle 10g:
SQL> declare
2 response_env varchar2(32767);
3 v_xml XMLTYPE;
4 l_user_first_name varchar2(100);
5 l_user_last_name varchar2(100);
6 l_error_value varchar2(100);
7 begin
8 response_env:='<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
9 <soapenv:Body>
10 <UserInfoObjResponse xmlns:axis2ns1="http://www.test.com/services">
11 <axis2ns1:FirstName >First Name Output</axis2ns1:FirstName>
12 <axis2ns1:LastName>Last Name Output</axis2ns1:LastName>
13 <axis2ns1:ErrorDescription />
14 </UserInfoObjResponse>
15 </soapenv:Body>
16 </soapenv:Envelope>';
17
18 dbms_output.put_line('Length of Request:' || length(response_env));
19 -- dbms_output.put_line ('Request: ' || response_env);
20
21 v_xml := XMLTYPE(response_env);
22
23 select r.*
24 into l_user_first_name, l_user_last_name, l_error_value
25 from XMLTABLE('/' PASSING v_xml
26 COLUMNS
27 first_name varchar2(30) PATH '/*:Envelope/*:Body/*:UserInfoObjResponse/*:FirstName/text()',
28 last_name varchar2(30) PATH '/*:Envelope/*:Body/*:UserInfoObjResponse/*:LastName/text()',
29 error_description varchar2(30) PATH '/*:Envelope/*:Body/*:UserInfoObjResponse/*:ErrorDescrition/text()'
30 ) r;
31
32 dbms_output.put_line ('l_user_first_name: ' || l_user_first_name);
33 dbms_output.put_line ('l_user_last_name : ' || l_user_last_name);
34 dbms_output.put_line ('l_error_value: ' || l_error_value);
35 end;
36 /
Length of Request:530
l_user_first_name: First Name Output
l_user_last_name : Last Name Output
l_error_value:
PL/SQL procedure successfully completed.Max
http://oracleitalia.wordpress.com
Edited by: Massimo Ruocchio on Feb 14, 2010 11:55 PM
Added the first one. -
How to invoke a Web Service from PL/SQL with Complex Type as input.
Hello,
I am trying to invoke a web service from PL/SQL using the UTL_DBWS package.
The web service expects a complex type as input (defined below):
<xs:complexType name="MsgType">
<xs:sequence>
<xs:element name="sender" type="xs:string"/>
<xs:element name="messageId" type="xs:string"/>
<xs:element name="messageType" type="xs:string"/>
<xs:element name="dateSent" type="xs:date"/>
</xs:sequence>
</xs:complexType>
How to construct input to this in PL/SQL Procedure?
Has any body tried this before?
An exmaple will be helpful.
ThanksDear,
I have read your article, it is useful for me. But I cannot Apply to my case. Please kindly help me. Thank you.
When running, the error occurs:
1:39:31 Execution failed: ORA-20000: soapenv:Server.userException - org.xml.sax.SAXParseException: Attribute name "password" associated with an element type "user" must be followed by the ' = ' character.
My webservice Url: http://abc.com.vn:81/axis/ABC_WS_TEST.jws?wsdl
I make PL/SQL (similiar as your example)
FUNCTION INVOKESENDMT
RETURN VARCHAR2
AS
l_request soap_api.t_request;
l_response soap_api.t_response;
l_return VARCHAR2(32767);
l_url VARCHAR2(32767);
l_namespace VARCHAR2(32767);
l_method VARCHAR2(32767);
l_soap_action VARCHAR2(32767);
l_result_name VARCHAR2(32767);
p_zipcode VARCHAR2(160);
BEGIN
--p_zipcode:='''TEST'' ; ''TEST'';''84912187098'';''84912187098'';''0'';''8118'';''1'';''000001'';''ThuNghiem'';''''';
p_zipcode:='TEST';
-- Set proxy details if no direct net connection.
--UTL_HTTP.set_proxy('myproxy:4480', NULL);
--UTL_HTTP.set_persistent_conn_support(TRUE);
-- Set proxy authentication if necessary.
--soap_api.set_proxy_authentication(p_username => 'TEST',
-- p_password => 'TEST');
l_url := 'http://abc.com.vn:81/axis/ABC_WS_TEST.jws';
l_namespace := 'xmlns="' || l_url || '"';
l_method := 'sendMT';
l_soap_action := l_url || '#sendMT';
l_result_name := 'sendMTResponse';
l_request := soap_api.new_request(p_method => l_method,
p_namespace => l_namespace);
soap_api.add_parameter(p_request => l_request,
p_name => 'user password sender receiver chargedflag servicenumber messagetype messageid textcontent binarycontent',
p_type => 'xsd:string',
p_value => p_zipcode);
l_response := soap_api.invoke(p_request => l_request,
p_url => l_url,
p_action => l_soap_action);
l_return := soap_api.get_return_value(p_response => l_response,
p_name => l_result_name,
p_namespace => l_namespace);
RETURN l_return;
END; -
Creating Web service for PL/SQL Procedure with Complex Data Types
I need to created web service for PL/SQL Procedure with Complex Data types like table of records as parameters, how do we map the pl/sql table type parameters with web service, how to go about these?
Hello,
When you are creating a service from a Stored Procedure, the OracleAS WS tools will create necessary Java and PL wrapper code to handle the complex types (table of record) properly and make them compatible with XML format for SOAP messages.
So what you should do is to use JDeveloper or WSA command line, to create a service from your store procedure and you will see that most of the work will be done for you.
You can find more information in the:
- Developing Web Services that Expose Database Resources
chapter of the Web Service Developer's guide.
Regards
Tugdual Grall -
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 -
Calling Reporting Services Web Service with jQuery possible?
Hi,
is it possible to call the Reporting Services Web Service with jQuery? If yes, can someone post me a small example?
Background:
My plan is to create a html with a form which is also uploaded then into the reportserver. I open this html later by clicking a link in a report (with gotoURL open.window). The report opens the html inclusive the overtaken of some additional parameters
(reportname, reportdescription). These parameters I will use in the html-form as defaultvalues for the corresponding input-text-fields. Now the user can make some changes (i.e. the decription). With a click on a button I will send the new description to
the Reporting Services Web Service by using the SetProperties method, closing the html-window and reload the report. Important is that I want to upload the html also into the reportserver itself.
I have already found how to consume a web service via jQuery but with the Reporting Services Web Service I did not get it running in my tests.
I have referenced to the following jQuery.js: http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
Here you can see my tests I made with the results:
$.ajax({
type: 'POST',
url: 'http://<..>/ReportServer/ReportService2010.asmx/ListChildren',
data: {'ItemPath':'/','Recursive':false},
complete: function(xData, status) {
$('p').html($(xData.responseXML).text()); // result
$("#divStatus").text( status ); // status }
I got a NULL response with Status success. But where are the items?
Another test which should response only one value was that:
$.ajax({
type: "POST",
contentType: "text/xml; charset=utf-8",
url: "http://<..>/ReportServer/ReportService2010.asmx/GetItemType",
data: {"Item":"/Development"}, // Development is a Folder in my Reportserver-Root
dataType: "xml",
success: function (msg) {
$("#divResult").html(msg.responseXML);
error: function (data, status, error) {
$("#divResult").html("WebSerivce unreachable<br> <br>" + data.responseXML + "<br> <br>(" + error + ")");
Here I got an [object Error]
And here my last test:
var soapMessage = '<?xml version="1.0" encoding="utf-8"?>\
<soap:Envelope \
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" \
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \
xmlns:xsd="http://www.w3.org/2001/XMLSchema">\
<soap:Body>\
<GetItemType xmlns="http://www.microsoft.com/sql/ReportingServer">\
<ItemPath>/Development</ItemPath>\
</GetItemType>\
</soap:Body>\
</soap:Envelope>';
$.ajax({
type: "POST",
contentType: "text/xml; charset=utf-8",
url: http://<..>/ReportServer/ReportService2010.asmx?wsdl,
data: soapMessage,
dataType: "xml",
success: processSuccess,
error: processError
function processSuccess(data, status, req) {
if (status == "success")
$("#response").text($(req.responseXML).find("Type").text());
function processError(data, status, req) {
alert(req.responseText + " " + status);
Here I got an "Undefined error"
Can anyone help me?
Thanks
René IllnerHi Rene,
I have one vbscript class to call web services. May be if you need you can use it.
dim ws
set ws = new webservice
ws.url = "http://servername/ReportServer/ReportService2010.asmx"
ws.method = "MethodName"
ws.parameters.Add "Parameter1", "Param1 Desc.."
ws.parameters.Add "Parameter2","[email protected].."
ws.execute
set ws = nothing
'------web service calling class
class WebService
public Url
public Method
public Response
public Parameters
public function execute()
dim xmlhttp
Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "POST", Url & "/" & Method, false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.send Parameters.toString
response = xmlhttp.responseText
set xmlhttp = nothing
end function
Private Sub Class_Initialize()
Set Parameters = new wsParameters
End Sub
Private Sub Class_Terminate()
Set Parameters = Nothing
End Sub
End class
class wsParameters
public mCol
public function toString()
dim nItem
dim buffer
buffer = ""
for nItem = 1 to Count
buffer = buffer & Item(nItem).toString & "&"
next
if right(buffer,1)="&" then
buffer = left(buffer,len(buffer)-1)
end if
toString = buffer
end function
public sub Clear
set mcol = nothing
Set mCol = CreateObject("Scripting.Dictionary")
end sub
public sub Add(pKey,pValue)
dim newParameter
set newParameter = new wsParameter
newParameter.Key = pKey
newParameter.Value = pValue
mCol.Add mCol.count+1, newParameter
set newParameter = nothing
end sub
public function Item(nKey)
set Item=mCol.Item(nKey)
end function
public function ExistsXKey(pKey)
dim nItem
for nItem = 1 to mcol.count
if mCol.Item(nItem).key = pKey then
ExistsXKeyword = true
exit for
end if
next
end function
public sub Remove(nKey)
mCol.Remove(nKey)
end sub
public function Count()
Count=mCol.count
end function
Private Sub Class_Initialize()
Set mCol = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
end class
class wsParameter
public Key
public Value
public function toString()
toString = Key & "=" & Value
end function
end class
Regards, RSingh -
Accessing external web service with non-constant URL
Hello, all
I am looking in the documentation on accessing external web services, but either I am looking in the wrong place, or the documentatoin is lacking info.
My clients have several web services in the local network (regular services, not DB-based), the have the same interface, but different URL's.
Versions of the DB are 11, 12, and 16.
First of all, I do not see in the specs an option for a non-hardcoded URL. The logic says that this has to be possible, but I cannot find it.
Second, I need to see an example of accessing an XML or JSon based service, I cannot find it in the specs either.
Can anyone point me to a document with examples?
Thank you
ArcadyThe following will call a web service with whatever URL you pass in as the argument "myurl". I think that is what you are looking for.
CREATE PROCEDURE cli_test2( myurl LONG VARCHAR )
RESULT( httpheaders long varchar, httpvalues long varchars
URL '!myurl'
To deal with the resulting data in XML, use the OPENXML() function.
eg. To turn an XML list of employees that looks like this:
<root>
<row EmployeeID="102" Surname="Whitney" GivenName="Fran" StartDate="1984-08-28"/>
</root>
into a table of results, you would do this (where xmlgetemplist() is the web service call):
CREATE OR REPLACE PROCEDURE xmlgetemplist() RESULT( httpheader long varchar, httpbody long varchar)
URL 'http://localhost/demo/xmlEmployeeList'
TYPE 'HTTP:GET';
create variable res long varchar;
-- call the web service
select httpbody into res from xmlgetemplist() where httpheader = 'Body'
-- extract the XML elements into a SQL result set
select * from openXML( res, '/root/row' ) WITH ( EmployeeID INT '@EmployeeID',
GivenName CHAR(20) '@GivenName',
Surname CHAR(20) '@Surname',
PhoneNumber CHAR(10) '@Phone');
To deal with the resulting data in JSON, use the sp_parse_json() procedure.
eg.
To turn a JSON formatted list of employees that looks like this:
"EmployeeID": 102,
"Surname": "Whitney",
"GivenName": "Fran",
"StartDate": "1984-08-28",
"TerminationDate": null
into a table of results, you would do this (where jsongetemplist() is the web service call):
CREATE OR REPLACE PROCEDURE jsongetemplist() RESULT( httpheader long varchar, httpbody long varchar)
URL 'http://localhost/demo/jsonEmployeeList'
TYPE 'HTTP:GET';
create variable foo long varchar;
--call the webservice
select httpbody into foo from jsongetemplist() where httpheader = 'Body';
--turn the json result into a structured array of data
-- this step is required because of less structured nature of JSON
call sp_parse_json( 'output_array', foo);
--extract the JSON elements from the output array into a SQL result set
SELECT output_array[[row_num]].EmployeeID as EmployeeID,
output_array[[row_num]].SurName as SurName,
output_array[[row_num]].GivenName as GivenName,
output_array[[row_num]].StartDate as StartDate,
output_array[[row_num]].TerminationDate as EndDate
FROM sa_rowgenerator(1, CARDINALITY(output_array))
Hope this helps,
--Jason -
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 SharePoint Web Services from PL/SQL
We are trying to call SharePoint Web Services with UTL_DBWS or UTL_HTTP. We are able to call some test web services, but when it comes to using SharePoint services, we keep getting 401 errors..even when we use set_authorization.
Has anyone been able to use UTL_DBWS or UTL_HTTP to call SharePoint web services? If so, can you point us in the right direction?
ThanksAB,
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 -
Error invoking SSL web service using pl sql UTL_HTTP
Web Services Gurus,
I am invoking a secure web service based on the following WSDL file from a pl/sql program using UTL_HTTP package.
The web service is secure and prompts for authentication.
The web services certificate is imported in Oracle Wallet on Database Server.
I am listing the WSDL file, the pl/sql code and error message as follows -
1. The WSDL file -
<definitions
name="Webservice"
targetNamespace="http://webservice.airclic.com/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://webservice.airclic.com/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>
<types>
<xs:schema targetNamespace="http://webservice.airclic.com/" version="1.0" xmlns:tns="http://webservice.airclic.com/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Exception" type="tns:Exception"/>
<xs:element name="sendAuthenticationResponse" type="tns:sendAuthenticationResponse"/>
<xs:element name="sendAuthenticationResponseResponse" type="tns:sendAuthenticationResponseResponse"/>
<xs:complexType name="AuthenticationResponse">
<xs:complexContent>
<xs:extension base="tns:Response">
<xs:sequence>
<xs:element name="success" type="xs:boolean"/>
<xs:element name="username" type="xs:string"/>
<xs:element minOccurs="0" name="password" type="xs:string"/>
<xs:element minOccurs="0" name="firstName" type="xs:string"/>
<xs:element minOccurs="0" name="lastName" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
<xs:element minOccurs="0" name="active" type="xs:boolean"/>
<xs:element minOccurs="0" name="timeZone" type="xs:string"/>
<xs:element minOccurs="0" name="group" type="xs:string"/>
<xs:element minOccurs="0" name="role" type="xs:string"/>
<xs:element minOccurs="0" name="errorCode" type="xs:string"/>
<xs:element minOccurs="0" name="errorMessage" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="DispatchEvent"></xs:complexType>
<xs:complexType name="sendAuthenticationResponse">
<xs:sequence>
<xs:element minOccurs="0" name="authenticationResponse" type="tns:AuthenticationResponse"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="sendAuthenticationResponseResponse">
<xs:sequence/>
</xs:complexType>
<xs:simpleType name="status"></xs:simpleType>
<xs:simpleType name="source"></xs:simpleType>
<xs:simpleType name="eventType"></xs:simpleType>
</xs:schema>
</types>
<message name="Webservice_sendAuthenticationResponse">
<part name="sendAuthenticationResponse" element="tns:sendAuthenticationResponse"/>
</message>
<message name="Webservice_sendAuthenticationResponseResponse">
<part name="sendAuthenticationResponseResponse" element="tns:sendAuthenticationResponseResponse"/>
</message>
<portType name="Webservice">
<operation name="sendAuthenticationResponse" parameterOrder="sendAuthenticationResponse">
<input message="tns:Webservice_sendAuthenticationResponse"/>
<output message="tns:Webservice_sendAuthenticationResponseResponse"/>
<fault name="Exception" message="tns:Exception"/>
</operation>
</portType>
<binding name="WebserviceBinding" type="tns:Webservice">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="sendAuthenticationResponse">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="Exception">
<soap:fault name="Exception" use="literal"/>
</fault>
</operation>
</binding>
<service name="Webservice">
<port name="WebservicePort" binding="tns:WebserviceBinding">
<soap:address location="https://host.airclic.com:443/webservice/product/fieldservice/v1/Webservice"/>
</port>
</service>
</definitions>
2. The pl/sql code that calls the web service operation sendAuthenticationResponse
procedure send_auth_response
as
soap_request varchar2(30000);
soap_respond varchar2(30000);
http_req utl_http.req;
http_resp utl_http.resp;
resp XMLType;
i integer;
begin
-- initiate wallet for AirClic certificate
dbms_output.put_line ('1');
utl_http.set_wallet('file:/etc/oracle/wallet','<wallet password>');
-- create soap request
dbms_output.put_line ('2');
soap_request:= '<?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/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<ns1:sendAuthenticationResponse xmlns="https://host.airclic.com:443/webservice/product/fieldservice/v1/Webservice" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<success xsi:type="xsd:boolean">true</success>
<username xsi:type="xsd:string">changlanih</username>
<password xsi:type="xsd:string">abcd1234</password>
<firstName xsi:type="xsd:string">hero</firstName>
<lastName xsi:type="xsd:string">changlani</lastName>
<email xsi:type="xsd:string">[email protected]</email>
<active xsi:type="xsd:boolean">true</active>
<timeZone xsi:type="xsd:string">eastern</timeZone>
<group xsi:type="xsd:string">Northeast</group>
<role xsi:type="xsd:string">Service Manager</role>
<errorCode xsi:type="xsd:string"></errorCode>
<errorMessage xsi:type="xsd:string"></errorMessage>
</ns1:sendAuthenticationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>';
-- request that exceptions are raised for error Status Codes
dbms_output.put_line ('3');
utl_http.set_response_error_check (true);
-- allow testing for exceptions like UTL_HTTP.http_server_error
dbms_output.put_line ('4');
utl_http.set_detailed_excp_support (true);
--utl_http.set_transfer_timeout (ln_time_out);
dbms_output.put_line ('5');
utl_http.set_body_charset ('UTF-8');
-- begin request
dbms_output.put_line ('5.5');
http_req:= utl_http.begin_request
('https://host.airclic.com:443/webservice/product/fieldservice/v1/Webservice/sendAuthenticationResponse', ------ is the url correct here ?
'POST',
'HTTP/1.1'
dbms_output.put_line ('6');
utl_http.set_authentication(http_req, '<username for webservice>', '<password for webservice user>');
dbms_output.put_line ('7');
utl_http.set_persistent_conn_support (http_req, false);
dbms_output.put_line ('8');
utl_http.set_header(http_req, 'Content-Type', 'text/xml'); -- since we are dealing with plain text in XML documents
dbms_output.put_line ('9');
utl_http.set_header(http_req, 'Content-Length', length(soap_request));
dbms_output.put_line ('10');
utl_http.set_header(http_req, 'SOAPAction', ''); -- required to specify this is a SOAP communication
dbms_output.put_line ('11');
utl_http.write_text(http_req, soap_request);
dbms_output.put_line ('12');
http_resp := utl_http.get_response(http_req);
-- debug messages
DBMS_OUTPUT.PUT_LINE('-------utl_http.get_response---------------------');
DBMS_OUTPUT.PUT_LINE('http_resp.status_code is :'||http_resp.status_code );
DBMS_OUTPUT.PUT_LINE('http_resp.reason_phrase is :'||http_resp.reason_phrase);
DBMS_OUTPUT.PUT_LINE('http_resp.http_version is :'||http_resp.http_version);
DBMS_OUTPUT.PUT_LINE('http_resp.private_hndl is :'||http_resp.private_hndl);
DBMS_OUTPUT.PUT_LINE('-------utl_http.get_response----------------------');
utl_http.read_text(http_resp, soap_respond);
dbms_output.put_line ('13');
utl_http.end_response(http_resp);
dbms_output.put_line ('14');
resp := XMLType.createXML(soap_respond);
dbms_output.put_line ('15');
resp := resp.extract('/soap:Envelop/soap:Body/child::node()',
'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"');
i:=0;
dbms_output.put_line ('16');
loop
dbms_output.put_line(substr(soap_respond, 1 + i * 255, 250));
i := i + 1;
if (i * 250) > length(soap_respond) then
exit;
end if;
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('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(sqlerrm);
end send_auth_response;
3. Output when I run the send_auth_response procedure
Connecting to the database cpdev.
1
2
3
4
5
5.5
ORA-12560: TNS:protocol adapter error
Process exited.
Disconnecting from the database cpdev.
Comments -
The web service operation only has input message. The input message consists of a complex type as seen in WSDL.
Questions -
1. This is my first attempt in invoking a web service from pl/sql program. Is the code in SOAP body correct as mapped to the complex type in WSDL ?
2. As seen from the dbms_out - the last message before ORA-12560 is 5.5, that means the call is erroring at following code line -
http_req:= utl_http.begin_request ------ what am I doing wrong here ?
3. The web service is SSL as seen from WSDLand needs a username/password for access - which is being performed by following code line -
utl_http.set_authentication(http_req, '<username for webservice>', '<password for webservice user>'); ------- is that correct ?
4. I am not using any proxy server - should I be using it ? When is it necessary to use proxy ?
Appreciate any help.
Thanx.Oracle is hosted by HOST A - this is where the pl/sql program resides.
The Web Service being accessed by pl/sql program is hosted by HOST B and there are 4 firewalls in between.
Oracle was not even able to establish connection to web services host.
Escalated the issue with networking folks and they resolved the connectivity problem.
Hope that helps. -
How to create web services with complex objects as parameters
Hi,
Not sure if this is the right place, but...
I'm using Netbeans 5.5 and trying to learn web services.
Creating a simple web service with simple parameters like strings and integers is nice and easy. I'm now trying to take the next step, and create a web service with a more complex schema as a parameter.
I've tried two approaches, and hit dead ends on both:
(1) Define my complex schema as an xsd file, and then create a WSDL file. Creating the schema and saving it in my EFB project works fine; when I try to create a new WSDL file, the IDE gives me a button to import external schemas - which is where the problem is: the Browse simply won't find my newly created schema file.
(2) Define a Java class (in this case, it's a fairly simple example containing a single ArrayList), and then use the IDE to generate a web service from Java. The IDE does this fine, but I now have no idea how to consume or test the web service - I don't know where to look for the WSDL that has presumably been generated, and I'm also a bit iffy over what answers to give the WSDL creator about port names etc.
Ideally, I'd prefer to get approach 1 to work - can someone point me in the direction of a sensible tutorial for these things?
(Happy to carry on using Netbeans 5.5 or to revert to Sun Studio Enterprise, which I was playing with before.)
All help appreciated, Thanks- For NetBeans related questions, nbusers mailing list is more suited. It is often visited by NetBeans experts.
http://www.netbeans.org/community/lists/top.html
...[email protected]
The NetBeans users mailing list. General discussion of NetBeans use, this is the place to ask for help and to help others.... (There is a 'Subscribe' button next to the above that you can use to subscribe to the list).
Can you try posting this question on nbusers list?
- SJSE 8.1 is based on an older version of NB (NB5.0).
You should definitely continue with NetBeans, since all development is now being done in NetBeans; all the major JSE modules have been moved to opensource at netbeans.org and are all being developed there. There are as yet no future plans to work on further releases for JSE.
Please check out http://www.netbeans.org for more details. -
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 -
Web service with complex java type
Hi,
I create a web service method with String o with Array of Strings without problem. Now I nedd to create a ws that return a table, so I create a class like this:
public class User {
private String Name;
private String.Surname;
public void setName(String setName){
Name= setName;
public void setSurname(String setSurname){
Surname=setSurname;
In my ws class I use this object:
public User[] getUser(String a){
User[] user = new User[10];
for (int i=0;i<10;i++){
User<i>.setName("aaa");
User<i>.setSurname("bbb");
return user;
When in WebService Perspective I try to create my ws in wizard mode I see method getUser but I can't check it
Where is error?
Thanks
AndreaHI Andrea,
I think with present netweaver developer studio , we can create Web services with end points as simple data types in java and the array of that simple data types.
not sure whether it support our own custom developed classes as end points.
just go through these links.
http://help.sap.com/saphelp_nw2004s/helpdata/en/f7/af60f2e04d0848888675a800623a81/frameset.htm
http://help.sap.com/saphelp_nw2004s/helpdata/en/f7/af60f2e04d0848888675a800623a81/frameset.htm
from this we will get Restrictions for WS Endpoints.
Regards
Kishor Gopinathan -
REST web service using PL/SQL
Hello,
I am trying to learn how a REST web service can be created using PL/SQL and how it can be used.
I am using this as a starting point.
Also, I am using the pre-build "Oracle Developer Days" setup for this (which means I have 11.2 version of oracle database installed).
I have done all the steps mentioned in the above blog post but when I try to access the web service in browser, I get the
"404 Not found - The requested URL /devtest/rest-demo/departments was not found on this server" message.
Here is my DAD setup :
SQL> declare
l_name dbms_epg.varchar2_table;
l_value dbms_epg.varchar2_table;
begin
DBMS_EPG.GET_ALL_DAD_ATTRIBUTES (dad_name => 'devtest', attr_names => l_name, attr_values => l_value);
for i in l_name.first..l_name.last
loop
dbms_output.put_line(l_name(i)||' => '||l_value(i));
end loop;
end;
2 3 4 5 6 7 8 9 10 11 database-username => HR1
path-alias => rest-demo
path-alias-procedure => rest_handler.handle_requestI have created the package and procedures as mentioned in that blog post
SQL> desc hr1.rest_handler
PROCEDURE HANDLE_REQUEST
Argument Name Type In/Out Default?
P_PATH VARCHAR2 INHave I missed something ?
Any help will be appreciated.
ThanksProbably an security issue, I guess. The article (http://ora-00001.blogspot.com/2009/07/creating-rest-web-service-with-plsql.html) mentioned is a very good one (if not only I like what the site has become in recent years - much good tips and articles). As an alternative for your problems, have a look at the explaination of how Tim Hall has done it...
http://www.oracle-base.com/articles/misc/XMLOverHTTP.php
Edited by: Marco Gralike on Nov 21, 2011 11:31 AM
Maybe you are looking for
-
Disc image file exported from Encore CS4 won't work
Hello, I have a problem concerning the export of a disc image file in Encore CS4. I recently upgraded to CS4 and wanted to continue my project which I started editing with CS3. While working with CS3 I already did image files from this project for bu
-
MacBook Pro Core 2 Duo intermittent severe Airport glitches
My MacBook Pro seems to be unable to remain consistently synchronised with our Airport network. Every minute or two, it blocks wireless network traffic completely for 10-20 seconds. At other times, the ping times to our base stations fluctuate wildly
-
How to count bit patterns in a file ?
Think of the following: You have two files that you want to compare bit by bit. A file has been send the other one has been received. The two files can be of different size (Connection lost). But you not only want to know how many bits are different
-
We should be able to edit our comments for the weblogs
Is there any way we can go back and edit our comments for the weblogs. I am not a very good typer ( i am always thinking ahead of my typing) and i would love to go back get rid of typos from my comments.
-
Formatted Search on User Defined Table
Dear Experts, I have the following formatted search query on a user defined table : select $[dbo.[@SALES_BUDGET].U_AcctCode] It throws an error when I attempt to execute it. What's the proper way to write formatted searches on User Defined Tables. Pl