当前位置: 首页 > news >正文

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;

执行效果,如下所示

http://www.lryc.cn/news/374629.html

相关文章:

  • 软件回归测试:策略及案例分析
  • openstack搭建
  • HIVE及SparkSQL优化经验
  • Django 5 Web应用开发实战
  • 互联网摸鱼日报(2024-06-17)
  • Docker Desktop Installer For Windows 国内下载地址
  • 做好程序前设计
  • SpringCloud:Feign远程调用
  • leetcode-05-[242]有效的字母异位词[349]两个数组的交集[202]快乐数[1]两数之和
  • C语言实现动态栈
  • 进程间的通信
  • hadoop/hive/DBeaver启动流程
  • 1节18650锂电池的容量是多大,电流,电压是多大
  • 基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
  • Linux C语言:多级指针(void指针和const)
  • MicroPython+ESP32 C3开发上云
  • 动态 SQL
  • 功能强大的多功能文档转换工具Neevia Document Converter Pro 7.5.0.241
  • 从零到一,深入浅出大语言模型的奇妙世界
  • ESP8266发送WOL幻数据包实现电脑远程唤醒
  • 用一个ESP32S3-Zero把有线键盘变为无线
  • Redis 7.x 系列【3】多种连接方式
  • 数据结构(DS)C语言版:学习笔记(4):线性表
  • Linux 命令大全
  • [华为北向网管NCE开发教程(6)消息订阅
  • 2024.6.15 英语六级 经验与复盘
  • 计算机专业的未来展望
  • Shell变量的高级用法
  • 【Python/Pytorch - 网络模型】-- SVD算法
  • 全光万兆时代来临:信而泰如何推动F5G-A(50PONFTTR)技术发展