oracle发送http请求

UTL_HTTP包让SQL和PLSQL能够调用超文本传输协议(HTTP),也就是说可以使用它在Internet上访问数据。

当包用HTTPS从Web site获取数据时,要使用Oracle Wallet,它是由Oracle Wallet Manager或者orapki utility创建。非HTTPS获取时,则不需要Oracle wallet。

参照

https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/u_http.htm#ARPLS070

概述

操作步骤

函数、存储解析:

begin_request:开始一个HTTP请求,会和目标web server建立一个网络连接。

set_xxx:设置请求header

write_xxx:设置请求body 参数

get_response:获取响应的header

get_xxx:获取响应header

read_xxx:将响应内容转换成oracle识别的字符串等格式

end_request:在请求未完成时中断请求

示例代码

set serveroutput on

DECLARE

  req   UTL_HTTP.REQ;

  resp  UTL_HTTP.RESP;

  value VARCHAR2(1000);

BEGIN

  --UTL_HTTP.SET_PROXY('proxy.my-company.com', 'corp.my-company.com');

  -- 1、开始放送请求

  req := UTL_HTTP.BEGIN_REQUEST('http://192.168.12.55:8080/ords/test/ttest/');

  

  -- 2、设置请求header

  UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/4.0');

  

  -- 3、设置请求body

  

  -- 4、接收请求返回的响应

  resp := UTL_HTTP.GET_RESPONSE(req);

  

  -- 5、获取响应header

  

  -- 6、转换响应格式为字符串

  LOOP

    UTL_HTTP.READ_LINE(resp, value, TRUE);

    DBMS_OUTPUT.PUT_LINE(value);

  END LOOP;

  

  -- 7、结束响应 整个请求结束

  UTL_HTTP.END_RESPONSE(resp);

  

EXCEPTION

  WHEN UTL_HTTP.END_OF_BODY THEN

    UTL_HTTP.END_RESPONSE(resp);

END;

示例集合

参照

https://www.cnblogs.com/zjw-blog/p/14060723.html

get请求

set serveroutput on

DECLARE

  req   UTL_HTTP.REQ;

  resp  UTL_HTTP.RESP;

  value VARCHAR2(10000);

BEGIN

  -- 1、开始放送请求

  req := UTL_HTTP.BEGIN_REQUEST('http://192.168.12.51:8081/user/save?name=ccc'||'&'||'age=15');

  

  -- 2、设置请求header

  

  -- 3、设置请求body

  

  -- 4、接收请求返回的响应

  resp := UTL_HTTP.GET_RESPONSE(req);

  

  -- 5、获取响应header

  

  -- 6、转换响应格式为字符串

  LOOP

    UTL_HTTP.READ_LINE(resp, value, TRUE);

    DBMS_OUTPUT.PUT_LINE(value);

  END LOOP;

  

  -- 7、结束响应 整个请求结束

  UTL_HTTP.END_RESPONSE(resp);

  

EXCEPTION

  WHEN UTL_HTTP.END_OF_BODY THEN

    UTL_HTTP.END_RESPONSE(resp);

END;

执行效果,如下所示

post请求

DECLARE

  req   UTL_HTTP.REQ;

  resp  UTL_HTTP.RESP;

  value VARCHAR2(10000);

BEGIN

  -- 1、开始放送请求

  req := UTL_HTTP.BEGIN_REQUEST('http://192.168.12.51:8081/user/save','POST');

  

  -- 2、设置请求header

  UTL_HTTP.SET_BODY_CHARSET('UTF-8');

  UTL_HTTP.SET_HEADER(req, 'Content-Type', 'application/x-www-form-urlencoded');

  UTL_HTTP.SET_HEADER(req, 'Content-Length',lengthb('name=ccc'||'&'||'age=15'));

  

  -- 3、设置请求body

  UTL_HTTP.WRITE_TEXT(req,'name=ccc'||'&'||'age=15');

  

  -- 4、接收请求返回的响应

  resp := UTL_HTTP.GET_RESPONSE(req);

  

  -- 5、获取响应header

  

  -- 6、转换响应格式为字符串

  LOOP

    UTL_HTTP.READ_LINE(resp, value, TRUE);

    DBMS_OUTPUT.PUT_LINE(value);

  END LOOP;

  

  -- 7、结束响应 整个请求结束

  UTL_HTTP.END_RESPONSE(resp);

  

EXCEPTION

  WHEN UTL_HTTP.END_OF_BODY THEN

    UTL_HTTP.END_RESPONSE(resp);

END;

执行效果,如下所示

相关推荐

  1. RestTemplate发送https请求

    2024-06-18 07:08:02       39 阅读
  2. Linux发送HTTP请求

    2024-06-18 07:08:02       14 阅读
  3. linux发送http请求命令

    2024-06-18 07:08:02       39 阅读
  4. QT-发送HTTP请求/QNetworkAccessManager

    2024-06-18 07:08:02       35 阅读
  5. C++发起Https请求

    2024-06-18 07:08:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-18 07:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-18 07:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-18 07:08:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-18 07:08:02       20 阅读

热门阅读

  1. 【Homebrew】包管理器清理软件包,释放mac空间

    2024-06-18 07:08:02       11 阅读
  2. redis击穿问题使用锁实现方案

    2024-06-18 07:08:02       8 阅读
  3. ZSH 配置

    2024-06-18 07:08:02       7 阅读
  4. supersocket的socket层源码解析

    2024-06-18 07:08:02       9 阅读
  5. codeArts Snap:辅助你的编程神器

    2024-06-18 07:08:02       8 阅读
  6. 机器学习中的神经网络重难点!纯干货(上篇)

    2024-06-18 07:08:02       7 阅读
  7. LeetCode 619, 58, 24

    2024-06-18 07:08:02       10 阅读
  8. 随机梯度下降(SGD)

    2024-06-18 07:08:02       9 阅读