问题描述
嗨,
你能帮我吗?我被尝试执行一个简单的命令,并且不起作用。
选择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);
结束;
你能帮我吗?我被尝试执行一个简单的命令,并且不起作用。
选择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端点获取任意长度数据的示例
如果您正在考虑将数据发送到物联网平台,他们可能会期待您拨打休息电话。如果是这样的话,我建议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
这是一个简单的片段,作为从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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




