CREATE OR REPLACE procedure wwv_display_url
(
p_mode in number,
p_exec_mode in number,
p_content_url in varchar2,
p_proxy_url in varchar2
)
is
l_content_url varchar2(32767);
l_proxy_url varchar2(32767);
web_page utl_http.html_pieces;
base_address varchar2(32767);
error_flag number(1):=0;
NULL_URL exception;
req utl_http.req;
resp utl_http.resp;
name varchar2(32767);
value varchar2(32767);
errorMessage varchar2(32767);
errorCode varchar2(32767);
no_of_redirects CONSTANT NUMBER(3) := 100;
begin
l_content_url := ltrim(rtrim(p_content_url));
if wwv_utlbuild.is_null_value(l_content_url) then
raise NULL_URL;
end if;
l_proxy_url := ltrim(rtrim(p_proxy_url));
if (substr(upper(l_content_url),1,5)='HTTP:') then
base_address:=l_content_url;
elsif (substr(upper(l_content_url),1,5)='HTTPS') then
--https not supported by UTL_HTTP
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'url_no_https');
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
else
base_address:='http://'||l_content_url;
end if;
if p_mode = wwv_global.RUN_AS_NORMAL or p_exec_mode is null then
htp.print('');
elsif p_mode = wwv_global.RUN_AS_PORTLET and
p_exec_mode is not null then
htp.print('');
end if;
BEGIN
utl_http.set_detailed_excp_support(TRUE);
utl_http.set_follow_redirect(no_of_redirects);
utl_http.set_cookie_support(TRUE);
utl_http.set_proxy(l_proxy_url);
req := utl_http.begin_request(l_content_url);
utl_http.set_header(req, 'User-Agent',
owa_util.get_cgi_env('HTTP_USER_AGENT'));
resp := utl_http.get_response(req);
LOOP
utl_http.read_line(resp, value, TRUE);
htp.p(value);
END LOOP;
utl_http.end_response(resp);
EXCEPTION
WHEN utl_http.end_of_body THEN
utl_http.end_response(resp);
return;
WHEN utl_http.BAD_ARGUMENT THEN
errorMessage :=utl_http.get_detailed_sqlerrm;
errorCode :=utl_http.get_detailed_sqlcode;
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'utl_http_request_failed',
p1 => errorMessage || errorCode);
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
WHEN utl_http.TRANSFER_TIMEOUT THEN
errorMessage :=utl_http.get_detailed_sqlerrm;
errorCode :=utl_http.get_detailed_sqlcode;
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'utl_http_request_failed',
p1 => errorMessage || errorCode);
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
WHEN utl_http.PARTIAL_MULTIBYTE_CHAR THEN
errorMessage :=utl_http.get_detailed_sqlerrm;
errorCode :=utl_http.get_detailed_sqlcode;
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'utl_http_request_failed',
p1 => errorMessage || errorCode);
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
END;
base_address := wwctx_api.get_server_protocol || '://' ||
owa_util.get_cgi_env('HTTP_HOST') ||
owa_util.get_cgi_env('SCRIPT_PREFIX') || '/' ||
owa_util.get_cgi_env('DAD_NAME')|| '/';
htp.print('');
return;
exception
when NULL_URL then
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'url_null_content');
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
when others then
wwerr_api_error.add(
p_domain => wwerr_api_error.DOMAIN_WWV,
p_context => 'wwv_display_url',
p_sub_domain => 'wwv_utlbuild',
p_name => 'url_others');
wwerr_api_error_ui.show(
p_output_format => wwerr_api_error_ui.CONTENT_TYPE_HTML);
return;
end wwv_display_url;
/