暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle utl_htp是begin_request导致ORA-29263: HTTP协议错误

askTom 2016-07-06
474

问题描述

嗨,
我有可以使用浏览器访问的URL,并显示PDF

http://serv-ora11g:8081/jasperserver/flow.html?_flowId=viewReportFlow&j_username=jasperadmin&j_password=jasperadmin&reportUnit=/KVS/Collection/col1190&output=pdf

我为我的用户创建了一个ACL,并确实验证了

当我运行下面的代码时,我得到了这个错误,谢谢

过程call_report(p_report_name VARCHAR2,p_parameter type_parameter)

v_url VARCHAR2(4000);
请求系统;
响应系统。
v_file BLOB;
v_download RAW(32767);
开始
v_url := build_url(p _ 报告 _ 名称,p _ 参数);

-- 下面是导致错误的行
v_request := sys.utl_http.begin_request(v_url);

sys.utl_http.set_header(v_request,'user-Agent',g_user_agent);
响应: = sys.utl_http.get_response(v_request);
Dbms_lob.createtem临时 (v_file,TRUE,dbms_lob.session);

循环
开始
sys.utl_http.read_raw(v_response,v_download);
dbms_lob.writeappend(v_file,utl_raw.length(v_download),v_download);
当sys.Utl_http.end_of _ body时异常
退出;
结束;
结束循环;
sys.utl_http.end_response(v_response);

owa_util.mime_header('application/'| | output_format,false);
htp.p('内容长度:' | | dbms_lob.getlength(v_file));
htp.p('Content-Disposition: attachment; filename = "' | | p_report_name | | '。' | | output_format | | '");
owa_util.http_header_close;

下载文件;

Dbms_lob。免费临时 (v_file);
结束呼叫 _ 报告;

专家解答

您的blob获取代码看起来不错。我只是这样做了:

SQL> set serverout on
SQL> declare
  2  v_url VARCHAR2(4000);
  3  v_request sys.utl_http.req;
  4  v_response sys.utl_http.resp;
  5  v_file BLOB;
  6  v_download RAW(32767);
  7  BEGIN
  8  v_url := 'http://www.ausoug.org.au/2020/documents/Connor_McDonald_profile2.pdf';
  9  v_request := sys.utl_http.begin_request(v_url);
 10  --sys.utl_http.set_header(v_request, 'User-Agent', g_user_agent);
 11  v_response := sys.utl_http.get_response(v_request);
 12  dbms_lob.createtemporary(v_file, TRUE, dbms_lob.session);
 13  LOOP
 14  BEGIN
 15  sys.utl_http.read_raw(v_response, v_download);
 16  dbms_lob.writeappend(v_file, utl_raw.length(v_download), v_download);
 17  EXCEPTION WHEN sys.utl_http.end_of_body THEN
 18  EXIT;
 19  END;
 20  END LOOP;
 21  sys.utl_http.end_response(v_response);
 22  --owa_util.mime_header('application/' || output_format, false);
 23  --htp.p('Content-length: ' || dbms_lob.getlength(v_file));
 24  --htp.p('Content-Disposition: attachment; filename="' || p_report_name || '.'|| output_format ||'"');
 25  --owa_util.http_header_close;
 26  --wpg_docload.download_file(v_file);
 27  dbms_output.put_line(dbms_lob.getlength(v_file));
 28  dbms_lob.freetemporary(v_file);
 29  END;
 30  /
5814

PL/SQL procedure successfully completed.

C:\temp>dir Connor_McDonald_profile2.pdf
 Volume in drive C is System
 Volume Serial Number is 7AD7-C05A

 Directory of C:\temp

18/04/2014  05:49 PM             5,814 Connor_McDonald_profile2.pdf




ORA-29263不是ACL错误-它是一个更 “基本” 的错误,例如,您要求http并且该站点仅支持https,或者您遇到网络超时等。您的代码很好-但在您的 “导航” 到该web服务器上有一些不正确的地方。

希望这有所帮助。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论