【Oracle】调用HTTP接口

Oracle调用http接口

    • 前情提要
    • 1.创建HTTP请求函数
    • 2.创建ACL并授予权限
    • 3.测试HTTP请求函数
    • 一点建议

前情提要

公司唯有oracle被允许访问内外网,因此在oracle中发起HTTP请求。

1.创建HTTP请求函数

CREATE OR REPLACE FUNCTION HTTP_REQUEST(v_url  VARCHAR2,--請求地址v_param  VARCHAR2,--POST請求參數-->>'muser=32323&&passwd=232323';GET拼接URLv_type  varchar2--類型)return varchar2 is--GET--req UTL_HTTP.REQ;resp UTL_HTTP.RESP;v_line VARCHAR2 ( 4000 );v_text VARCHAR2 ( 4000 );v_param_length NUMBER ;--post--beginIF V_TYPE='GET' THEN  v_text := '';req := UTL_HTTP.BEGIN_REQUEST ( url => v_url, method => 'GET' );UTL_HTTP.SET_BODY_CHARSET('UTF-8');UTL_HTTP.SET_HEADER(req, 'Content-Type', 'application/json');resp := UTL_HTTP.GET_RESPONSE ( req );UTL_HTTP.READ_LINE ( resp, v_line, TRUE );v_text := v_text || v_line;UTL_HTTP.END_RESPONSE( resp );  ELSEv_param_length  := LENGTHB(v_param);req := UTL_HTTP.BEGIN_REQUEST (url=> v_url, method => 'POST');UTL_HTTP.SET_BODY_CHARSET('UTF-8');UTL_HTTP.SET_HEADER (r      =>  req,name   =>  'Content-Type',VALUE  =>  'application/json');UTL_HTTP.SET_HEADER (r      =>   req,name   =>   'Content-Length',VALUE  =>   v_param_length);UTL_HTTP.WRITE_RAW (r    => req,data => UTL_RAW.CAST_TO_RAW(v_param)); resp := UTL_HTTP.GET_RESPONSE(req);UTL_HTTP.READ_LINE(resp, v_text, TRUE);UTL_HTTP.END_RESPONSE(resp);END IF;return v_text;EXCEPTIONWHEN UTL_HTTP.END_OF_BODY THENUTL_HTTP.END_RESPONSE ( resp );WHEN OTHERS THENUTL_HTTP.END_RESPONSE(resp);UTL_HTTP.END_REQUEST(req);end;

2.创建ACL并授予权限

-- 验证数据库用户是否存在
SELECT username FROM dba_users WHERE username = 'WXGZH';-- 如果用户不存在,创建用户
BEGINEXECUTE IMMEDIATE 'CREATE USER wxgzh IDENTIFIED BY password'; -- 替换 password 为实际密码EXECUTE IMMEDIATE 'GRANT CONNECT TO wxgzh';
END;-- 创建 ACL 并授予权限
BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL(acl         => 'http_request_acl.xml',description => 'Allow HTTP requests',principal   => 'WXGZH', -- 确保使用正确的大小写is_grant    => TRUE,privilege   => 'connect');DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL(acl         => 'http_request_acl.xml',host        => '192.168.0.19',lower_port  => 18882,upper_port  => 18882);
END;-- 提交更改
COMMIT;-- 验证 ACL 配置
SELECT acl, principal, privilege, is_grant
FROM dba_network_acl_privileges
WHERE principal = 'WXGZH'; -- 确保使用正确的大小写

3.测试HTTP请求函数

-- 测试 HTTP 请求函数
SELECT HTTP_REQUEST('http://192.168.0.1:8080/commonMsg/pushMsg?id=2', '{}', 'POST') AS data FROM dual;

一点建议

在oracle中发起http请求对oracle压力比较大,建议不要将完整报文都丢给oracle进行调用。
建议的方式是,请求报文在某个地方存储起来,然后入参就传递一个ID。接收方通过ID进行查询完整的报文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30585.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据资产安全保卫战:构建多层次、全方位的数据安全防护体系,守护企业核心数据资产安全

一、引言 在信息化时代,数据资产已成为企业运营的核心,其安全性直接关系到企业的生存与发展。然而,随着网络技术的飞速发展,数据泄露、黑客攻击等安全威胁日益增多,给企业的数据资产安全带来了严峻挑战。因此&#xf…

CSS动画实现让元素一直旋转

在CSS中,使用keyframes动画和transform: rotate()属性来创建一个无限循环的旋转动画。以下是一个简单的示例,展示了如何使一个元素(比如一个div)无限地旋转: keyframes spin { from { transform: rotate(0deg); } …

202483读书笔记|《把你写进诗歌里》——人生是一场不知何时散场的约会,爱慕向来短暂,失去才是唯一出路

202483读书笔记|《把你写进诗歌里》——人生是一场不知何时散场的约会,爱慕向来短暂,失去才是唯一出路 摘录 《把你写进诗歌里(2020年度中国优秀诗歌)》,作者上官文露。并不惊艳,中英文双语对照的一本诗集&…

深入理解和应用Eureka:服务注册与发现的利器

目录 一 Eureka简介 什么是Eureka? 为什么选择Eureka? 二 Eureka的基本概念 Eureka Server Eureka Client 服务注册与发现 三 Eureka的工作原理 注册服务 心跳机制 服务发现 缓存机制 四 Eureka的配置与部署 配置Eureka Server 配置Eureka Client 五 Eureka的…

Python | Leetcode Python题解之第168题Excel表列名称

题目: 题解: class Solution:def convertToTitle(self, columnNumber: int) -> str:ans list()while columnNumber > 0:columnNumber - 1ans.append(chr(columnNumber % 26 ord("A")))columnNumber // 26return "".join(an…

RC4混淆变形

RC4混淆变形 一、RC4混淆变形1. 修改初始密钥调度算法 (KSA)2. 修改伪随机生成算法 (PRGA)3. 引入非线性变换4. 使用多个状态数组5. 增加密钥混淆步骤6.示例代码 二、RC4算法详解2.1. 密钥调度算法 (KSA)2.2. 伪随机生成算法 (PRGA)2.3. 加密/解密2.4 RC4 C实现2.5 代码解析 RC…

新手装修 避坑课2.0:装修之前一定要做好功课(55节课)

课程下载:https://download.csdn.net/download/m0_66047725/89388333 更多资源下载:关注我。 课程目录 第01节1.装修前准备工作.mp4 第02节开篇.mp4 第03节2.装修需要提前定好的设备和材料.mp4 第04节3.自装还是找装修公司.mp4 第05节4.自装怎么找…

Elementui的el-dropdown组件使用与案例

一、使用 trigger 属性用于设置下拉菜单的触发方式,可以是 click(点击触发)或 hover(悬停触发)。command 属性用于在 el-dropdown-item 上设置命令值。当用户点击某个菜单项时,会触发 command 事件&#x…

HTTP的持久连接(Persistent Connection)

目录 HTTP的持久连接(Persistent Connection)持久连接的工作原理HTTP/1.0 与 HTTP/1.1 的区别示例持久连接的优点持久连接的缺点超时机制 HTTP的持久连接(Persistent Connection) HTTP 的持久连接(Persistent Connect…

win11照片裁剪视频无法保存问题解决

win11照片默认走核显,intel的显卡可能无法解码,在设置里把照片的显示卡默认换成显卡就好了

红队内网攻防渗透:内网渗透之Linux内网权限提升技术:LXDDockerRbash限制型bash

红队内网攻防渗透 1. 内网权限提升技术1.1 Linux系统提权-普通用户-LXD容器1.2 Linux系统提权-普通用户-Docker容器1.3 权限在docker里面1.4 Linux系统提权-普通用户-Rbash限制型bash1. 内网权限提升技术 利用参考 https://gtfobins.github.io/LXD、LXC 和 Docker 是三种不同…

企业UDP文件传输工具测速的方式(下)

在前一篇文章中,我们深入讨论了UDP传输的基本概念和镭速UDP文件传输工具如何使用命令行快速进行速度测试。现在,让我们进一步探索更为高级和灵活的方法,即通过整合镭速UDP的动态或静态库来实现网络速度的测量,以及如何利用这一过程…

每日一练 - OSPF邻接与邻居关系

01 真题题目 下面关于 OSPF 邻居关系和邻接关系描述,正确的是: A.OSPF 路由器在交换信息之曲必须建立邻接关系 B.并非所有的邻居关系都可以成为邻接关系 C.接芙系由 OSPF 的 HELLO 协议维护 D.邻居关系是从邻接关系选出的为了交换路由信息而形成的关系 02 真题…

动态分区存储管理实验要点和难点以及常见报错解决

动态分区存储管理实验的主要目的是熟悉并掌握动态分区分配的各种算法,以及动态分区中分区回收的各种情况,并能够实现分区合并。以下是实验的一些主要内容和步骤: 实验准备:了解动态分区存储管理的基本原理和策略,包括动态分区的特点、虚拟内存管理的目标、页式虚拟存储管理…

差分数组汇总

本文涉及知识点 算法与数据结构汇总 差分数组 令 a[i] ∑ j : 0 i v D i f f [ i ] \sum_{j:0}^{i}vDiff[i] ∑j:0i​vDiff[i] 如果 vDiff[i1]&#xff0c;则a[i1…]全部 如果vDiff[i2]–,则a[i2…]全部–。 令11 < i2 &#xff0c;则&#xff1a; { a [ i ] 不变&…

1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页

一、源码特点 python Django个性化电影推荐管理系统是一套完善的web设计系统mysql数据库 利用elasticsearch存储浏览数据 &#xff0c;对理解python编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 开发环境pycharm…

27 map和set封装

map和set可以采用两套红黑树实现&#xff0c;也可以用同一个红黑树&#xff0c;就需要对前面的结构进行修改 迭代器的好处是可以方便遍历&#xff0c;是数据结构的底层实现与用户透明。如果想要给红黑树增加迭代器&#xff0c;需要考虑以前问题&#xff1a; begin()和end() s…

【PB案例学习笔记】-23创建一个窗口菜单

写在前面 这是PB案例学习笔记系列文章的第23篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

Spring和Spring Boot常用注解介绍及使用

Spring和Spring Boot框架通过丰富的注解集简化了Java开发&#xff0c;使得配置更加简洁且易于理解。 下面是一些常用的Spring和Spring Boot注解及其使用方式的简介&#xff1a; 目录 1. Component 2. Service 3. Repository 4. Controller 5. RestController 6. Autowire…

前端根据环境变量配置网页的title和favicon

前端根据环境变量配置网页的title和favicon 前言流程步骤一、设置environment文件二、在入口文件中配置三、删除index.html中的title和 icon link四、使用对应的打包命令进行部署 注意事项一、angular中&#xff0c;需要在angular.json添加favicon.ico额外的构建 前言 有些项目…