oracle发送https请求

参照

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

https://docs.oracle.com/cd/E11882_01/network.112/e40393/asowalet.htm#ASOAG160

https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/d_networkacl_adm.htm#ARPLS148

https://docs.oracle.com/cd/E11882_01/network.112/e36292/authorization.htm#DBSEG99980

版本:oracle 11.2.0.4.0

注意:服务器要发送外网http/https请求,配置其ip地址时,一定要配置dns。

配置wallet

要访问https接口,需要启用wallet。

下载证书

https://www.example.org

浏览器输入如上地址,下载证书。

上传至服务器

创建wallet

登录oracle数据库服务器,使用Oracle Wallet Manager新建wallet。

注意:linux系统Oracle Wallet Manager启动命令为owm,完整路径为:

$ORACLE_HOME/bin即/u01/app/oracle/product/11.2.0/dbhome_1/bin。owm需要启动图形界面,所以要使用图形类远程工具,本文中使用XQuartz

ssh -Y oracle@192.168.12.55

输入命令owm,启动Oracle Wallet Manager

会弹出一个提示框提示:默认wallet目录不存在,是否创建

创建即可。然后弹出新建wallet对话框,创建密码。walletpassword123

输入密码后,点击【OK】,提示是否现在就希望创建一个证书请求。选择【No】

点击保存按钮,保存wallet文件至默认位置即可

默认路径为:/u01/app/oracle/product/11.2.0/dbhome_1/owm/wallets/oracle

将之前下载的证书上传至服务器,然后导入信任证书。

导入信任证书

使用mac终端(终端会调用XQuartz,生成图形界面)连接oracle linux服务器,二者LANG都是zh_CN.UTF-8。owm图形界面显示乱码。关闭owm图形界面,直接在终端中输入命令设置LANG,export LANG=en_US.UTF-8,再次输入owm显示图形界面则正常。

保存后,将新生成的文件ewallet.p12

 由/u01/app/oracle/product/11.2.0/dbhome_1/owm/wallets/oracle中复制到

/u01/app/oracle/wallet,覆盖原先的 ewallet.p12,用于发送https请求时,设置上下文。

发送请求

oracle发送https请求与发送http请求没有本质的不同,只是需要在发送前在请求上下文中加入wallet信息。

简单示例

存储过程

set serveroutput on

declare

  request_context UTL_HTTP.REQUEST_CONTEXT_KEY;

  req             UTL_HTTP.REQ;

  resp            UTL_HTTP.RESP;

  data            VARCHAR2(10240);

BEGIN

  request_context := UTL_HTTP.CREATE_REQUEST_CONTEXT(

                       wallet_path          => 'file:/u01/app/oracle/wallet',

                       wallet_password      => 'walletpassword123'

                       --enable_cookies       => TRUE,

                       --max_cookies          => 300,

                       --max_cookies_per_site => 20

                       );

  req := UTL_HTTP.BEGIN_REQUEST(url => 'https://www.example.org',method => 'GET',request_context => request_context);

  resp := UTL_HTTP.GET_RESPONSE(req);

  BEGIN

    LOOP

       UTL_HTTP.READ_LINE(resp, data);

       DBMS_OUTPUT.PUT_LINE(data);

       -- DBMS_OUTPUT.PUT_LINE(instr(data,'access_token'));

    END LOOP;

  EXCEPTION

      WHEN UTL_HTTP.END_OF_BODY THEN

         UTL_HTTP.END_RESPONSE(resp);

  END;

  -- Destroy the request context

  UTL_HTTP.DESTROY_REQUEST_CONTEXT(request_context);

END;

效果截图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

江协科技51单片机学习- p11 Proteus安装模拟51单片机

前言: 本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。 引用: Proteus快速入门&…

OneNote for Windows 10 下载

OneNote for Windows 10 安装 1.在浏览器中输入地址:https://apps.microsoft.com/detail/9wzdncrfhvjl?hlzh-cn&glUS2OneNote for Windows 10 - 在 Windows 上免费下载并安装 |Microsoft StoreOneNote 是用于在设备上捕获和组织你的一切内容的数字笔记本。快速…

打破数据分析壁垒:SPSS复习必备(六)

一、数据的报表呈现 1.报表概述 (1).SPSS中的报表功能 1)Base 模块 2)Custom Tables 模块 3) Original Tables 模块 (2).报表的基本绘制步骤 步骤一:确定基本结构 步骤二:使用对话框绘制表格的基本结构 步骤三:完善细节 步骤四:添加其余变…

java课程设计GUI学生信息管理系统

目录 系统内容.. 3 用户界面模块... 4 数据存储模块... 4 信息管理模块... 4 管理模块.. 4 主要模块的算法描述... 4 –简要的语言描述... 4 运行及调试分析(测试数据及测试结果).. 5 课程设计总结... 7 参考文献(至少三个&#xf…

基于CSDN的Markdown文本编辑器的博客界面优化 | HTML | 文本标签 | 图像标签 | 个人主页引导

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 今天毛毛张分享的内容是如何在CSDN的Markdown编辑器中实现上图的效果,如果觉得能帮助到你的话就点击个人主页点点关注吧❗ 文章目录 1.前言2.基础知识3.字…

Sword and Shield Animations(劈砍防御剑盾带动画动作)

这是一个动画资产包,为剑和盾牌用户提供手工制作的成对动画和空闲。包括8向步行和跑步动画、攻击、跳跃、冲刺、向下状态移动和过渡、躲避、阻挡、蹒跚、各种配对终结者动画等。 一切你需要把剑和盾牌战士带到生活中。 动画总数:115 攻击19 区块5 关闭状态14 Evade 5 怠速9 跳…

Sequelize入门及简单的增删改查

前言 学习一下NodeJS怎么使用Sequelize怎么查询数据库数据 一、Sequelize是什么? Sequelize 是一个基于 promise 的 Node.js ORM, 二、搭建项目 1.安装过程 npm i -g sequelize-cli //全局安装sequelize-clinpm i sequelize mysql2 //安装sequelize和mysql2…

AI视频教程下载-与ChatGPT结合的UX用户体验/UI用户界面设计策略

Revolutionize UX_UI_ AI-Design Strategies with ChatGPT 提升你的设计工具包:使用ChatGPT、Figma和Miro的AI驱动UX/UI策略 50个创新UX提示 了解人工智能的基础知识。介绍ChatGPT及其底层技术。区分不同AI模型及其在设计中的应用。将AI工具融入设计工作流程的策略…

【Java基础】

Java基础常见面试题总结(上) 基础概念与常识 Java 语言有哪些特点? 简单易学(语法简单,上手容易);面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现…

JAVA期末复习2

目录 一、Java基础知识 1. 下面几个标识符中,哪些是命名正确的 (A) 2. 分析以下代码,哪些是合法的 (C) 3. 以下代码的执行结果是( B ) 4. 下面哪个不是java中的关键字?( B ) 5. 下面对数组…

Javase.图书管理系统基本框架

图书管理系统基本框架 1.核心类介绍2. book包详解2.1 Book 类2.1.2 代码展示2.1.2 代码解析 2.2 BookList 类2.2.2 代码展示2.2.2 代码解析 2.3Book类和BookList类的联系 3. 用户角色与管理3.1 User 类3.1.1 代码展示3.1.2 代码解析 3.2 adminUser 类3.2.1 代码展示3.2.2代码解…

Spring-bean

Spring 网站:spring.io 两个方面: 简化开发: IoCAOP 框架整合: MyBatis SpringFrameWork系统架构(上层依赖下层) 解决问题(代码耦合度高——模块与模块之间的依赖程度) 目标&am…

SARscape——中值滤波

目录 一、算法原理1、概述2、参考文献 二、软件操作三、结果展示1、原始图像2、滤波结果 一、算法原理 1、概述 中值滤波是把局部区域中的中间亮度值作为区域中心点像元的输出值。当取定的局部区域为3x3的正方形时,区域共有&…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇WinRS命令WinRM管理RDP终端密码喷射点CrackMapExec

红队内网攻防渗透 1. 内网横向移动1.1 内网横向移动方法分类1.2 WinRM&WinRS1.2.1 利用条件1.2.1.1 探针可用1.2.1.2 连接执行1.2.1.3 CS上线利用1.2.1.3.1 反向连接上线1.2.1.4 CS内置模块1.2.1.5 其他解决1.3 RDP1.3.1 探针连接1.3.2 连接执行1.3 CrackMapExec-密码喷射1…

MyBatis Plus Generator代码生成

一、MyBatis Plus Generator MyBatis Plus是一个功能强大的持久层框架,它简化了MyBatis的使用,提供了许多便捷的功能。其中,MyBatis Plus Generator是一个强大的代码生成器,可以帮助我们快速地根据数据库表结构生成对应的实体类、…

DVWA 靶场 SQL Injection (Blind) 通关解析

前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

系列一:微型操作系统内核源码详解系列一:rtos内核源码概论篇(以freertos为例)-CSDN博客 系列二:微型操作系统内核源码详解系列二:数据结构和对象篇(以freertos为例)-CSDN博客 系列…

C++初学者指南第一步---8.类型系统(基础)

C初学者指南第一步—8.类型系统(基础) 文章目录 C初学者指南第一步---8.类型系统(基础)1.用const声明常量2.类型别名3.类型推导 auto4.常量表达式:constexpr (C11) 1.用const声明常量 语法: Type const v…

君子小人的格局、境界

子曰:君子怀德,小人怀土;君子怀刑,小人怀惠。 直译:君子怀念道德,小人怀念乡土;君子关心法度,小人关心恩惠。 这里的君子与小人只是体现格局、境界的不同; 君子怀的是德…