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

Oracle UTL_HTTP.begin_request

ASKTOM 2021-02-16
2722

问题描述

嗨,

你能帮我吗?我被尝试执行一个简单的命令,并且不起作用。

选择utl_http.request('http://www.oracle.com/') 从双重
*
第1行的错误:
ORA-29273: HTTP请求失败
ORA-12535: TNS: 操作超时
ORA-06512: 在 “SYS.UTL_HTTP”,第1491行
ORA-06512: 在第1行

我尝试在云环境中,但也不起作用。我被称为管理员;

ORA-01031: insufficient privileges ORA-06512: at "SYS.UTL_HTTP", line 1810 ORA-06512: at "SYS.UTL_HTTP", line 136 ORA-06512: at "SYS.UTL_HTTP", line 1745 ORA-06512: 在第1行



我想做一个使用HTTP将数据发送到IoT平台的接口。
当我注释行时,comand UTL_HTTP.begin_request不会发生错误,并显示我可以访问软件包UTL_HTTP...

声明
l_url VARCHAR2(50) :='http://api.losant.com';
请求UTL_HTTP.req;
响应UTL_HTTP.resp;
开始
-发出HTTP请求并获得响应。
-- l_http_request := UTL_HTTP.begin_request(l_url,'GET','HTTP/1.1 '); <<----------------- 为什么我没有访问权限?

-- l_http_response := UTL_HTTP.get_response(l_http_request);
UTL_HTTP.end_response(l_http_response);
结束;






专家解答

您不会从dual查询UTL_HTTP请求。

这是一个简单的片段,作为从http端点获取任意长度数据的示例

set serverout on
declare
  l_url      varchar2(100) := '[your url]';
  l_req      utl_http.req;
  l_resp     utl_http.resp;
  l_content  clob;
  l_buffer   varchar2(32767);
begin
  dbms_lob.createtemporary(l_content, false);

  l_req  := utl_http.begin_request(l_url);
  l_resp := utl_http.get_response(l_req);

  begin
    loop
      utl_http.read_text(l_resp, l_buffer, 32000);
      dbms_lob.writeappend (l_content, length(l_buffer), l_buffer);
    end loop;
  exception
    when utl_http.end_of_body then
      utl_http.end_response(l_resp);
  end;

  dbms_output.put_line('Size='||length(l_content));

  dbms_lob.freetemporary(l_content);
end;
/



如果您正在考虑将数据发送到物联网平台,他们可能会期待您拨打休息电话。如果是这样的话,我建议APEX_WEB_SERVICE

https://docs.oracle.com/cd/E59726_01/doc.50/e39149/apex_web_service.htm#AEAPI537

这为你承担了很多繁重的工作。

同样,如果您使用的是https而不是http,请查看Tim关于如何启动和运行它的文章

https://oracle-base.com/articles/misc/utl_http-and-ssl


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论