oracle调用http接口,并处理中文乱码问题

最近要做一个监控oracle数据库中某张表变动后往另一个数据库中写入数据的应用。思路:数据库某张表数据变动时需要把这些数据写入另外一个数据库的表中,写一个http接口,在数据库表中有数据变动时将数据传给http接 口,并进行相应业务操作。主要问题:数据存在中文时,会报错或乱码问题,网上很多处理的文章但是都描述的都比较模糊或者复杂,总结了网上很多方法,在此做一下记录。1.首先是数据库层面的操作,这些网上一大堆,就单纯做下记录吧。借鉴自:oracle通过触发器发送http请求---创建触发器cre
摘要由CSDN通过智能技术生成

最近要做一个监控oracle数据库中某张表变动后往另一个数据库中写入数据的应用。
思路:数据库某张表数据变动时需要把这些数据写入另外一个数据库的表中,写一个http接口,在数据库表中有数据变动时将数据传给http接 口,并进行相应业务操作。
主要问题:数据存在中文时,会报错或乱码问题,网上很多处理的文章但是都描述的都比较模糊或者复杂,总结了网上很多方法,在此做一下记录。
1.首先是数据库层面的操作,这些网上一大堆,就单纯做下记录吧。
借鉴自:oracle通过触发器发送http请求

---创建触发器
create or replace trigger Test
after insert
on hip_nis_message --监听该张表的insert操作
for each row
declare
json varchar(4000);
begin
 --将参数拼接成JSON字符串并赋值给json变量,传入P_TEST存储过程
 json := '{"method":"NIS_MSG","mid":"'||:new.MESSAGEID||'","sendUsr":"'||:new.SENDUSR||'"}';
 P_TEST(json);--执行存储过程
end Test;
------------------------------------------------------
--创建存储过程调用http接口
create or replace procedure P_TEST(json in varchar2) as
begin
  DECLARE
      req   UTL_HTTP.REQ;
      resp  UTL_HTTP.RESP;
      value VARCHAR2(1024);  -- 缓存
      v_url VARCHAR2(4000) :='http://127.0.0.1:8086/test-http/MessageService/p?param='||**UTL_RAW.CAST_TO_RAW(json)**;                         --将json参数进行16进制编码,否则中文会报异常或者乱码
      v_param VARCHAR2(4000) := '1';            --本来是做为请求报文的,现在请求报文拼接到url地址上去了                                  
      v_param_length NUMBER := LENGTHB(v_param
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值