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; /