alexandria-plsql-utils/ora/http_util_pkg.pkb
2015-02-20 19:43:42 +01:00

115 lines
2.3 KiB
Plaintext
Executable File

create or replace package body http_util_pkg
as
/*
Purpose: Package contains HTTP utilities
Remarks:
Who Date Description
------ ---------- --------------------------------
MBR 01.01.2008 Created
*/
function get_clob_from_url (p_url in varchar2) return clob
as
l_http_request utl_http.req;
l_http_response utl_http.resp;
l_text varchar2(32767);
l_returnvalue clob;
begin
/*
Purpose: get clob from URL
Remarks:
Who Date Description
------ ---------- --------------------------------
MBR 01.01.2008 Created
*/
dbms_lob.createtemporary(l_returnvalue, false);
l_http_request := utl_http.begin_request (p_url);
l_http_response := utl_http.get_response (l_http_request);
begin
loop
utl_http.read_text (l_http_response, l_text, 32767);
dbms_lob.writeappend (l_returnvalue, length(l_text), l_text);
end loop;
exception
when utl_http.end_of_body then
utl_http.end_response (l_http_response);
end;
return l_returnvalue;
exception
when others then
utl_http.end_response (l_http_response);
dbms_lob.freetemporary(l_returnvalue);
raise;
end get_clob_from_url;
function get_blob_from_url (p_url in varchar2) return blob
as
l_http_request utl_http.req;
l_http_response utl_http.resp;
l_raw raw(32767);
l_returnvalue blob;
begin
/*
Purpose: Get blob from URL
Remarks:
Who Date Description
------ ---------- --------------------------------
MBR 01.01.2008 Created
*/
dbms_lob.createtemporary (l_returnvalue, false);
l_http_request := utl_http.begin_request (p_url);
l_http_response := utl_http.get_response (l_http_request);
begin
loop
utl_http.read_raw(l_http_response, l_raw, 32767);
dbms_lob.writeappend (l_returnvalue, utl_raw.length(l_raw), l_raw);
end loop;
exception
when utl_http.end_of_body then
utl_http.end_response(l_http_response);
end;
return l_returnvalue;
exception
when others then
utl_http.end_response (l_http_response);
dbms_lob.freetemporary (l_returnvalue);
raise;
end get_blob_from_url;
end http_util_pkg;
/