記錄 Oracle 遠端呼叫 HTTP 介面

2021-10-04 13:23:37 字數 4544 閱讀 2526

4. 可能會使用到

遇到的問題

提供參考

@restcontroller

("abouttriggercontroller"

)public

class

abouttriggercontroller

}

儲存過程,需要在sql視窗中執行(使用超級管理員使用者執行)。根據自己的需求對裡面的內容進行修改。

principal 變數是授權的賬號,根據自己的情況進行配置。

begin

dbms_network_acl_admin.create_acl (

-- 建立訪問控制檔案(acl)

,-- 檔名稱

,-- 描述

principal =

>

'demo'

,-- 授權或者取消授權賬號,大小寫敏感

is_grant =

>

true

,-- 授權還是取消授權

privilege =

>

'connect'

,-- 授權或者取消授權的許可權列表

start_date =

>

null

,-- 起始日期

end_date =

>

null

-- 結束日期);

--新增訪問許可權列表項

dbms_network_acl_admin.add_privilege (

-- 新增訪問許可權列表項

,-- 剛才建立的acl名稱

principal =

>

'demo'

,-- 授權或取消授權使用者

is_grant =

>

true

,-- 與上同

privilege =

>

'resolve'

,-- 許可權列表

start_date =

>

null

,

end_date =

>

null);

--配置對應ip位址及埠

dbms_network_acl_admin.assign_acl (

-- 該段命令意思是允許訪問acl名為utl_http.xml下授權的使用者,使用oracle網路訪問包,所允許訪問的目的主機,及其埠範圍。

, host =

>

'127.0.0.1'

,-- ip位址或者網域名稱,填寫http://localhost:9000/hello與http://localhost:9000/是會報host無效的

-- 且建議使用ip位址或者使用網域名稱,若用localhost,當oracle不是安裝在本機上的情況下,會出現問題

lower_port =

>

9102

,-- 允許訪問的起始埠號

upper_port =

>

null

-- 允許訪問的截止埠號);

end;

儲存過程,需要在sql視窗中執行。r_url varchar2 變數是要呼叫的 url, 需要自行配置。

;--通過body傳送訊息

);如果需要擴充套件訪問許可權列表項的埠或是想修改主機位址,可以使用以下儲存過程來處理。

begin

dbms_network_acl_admin.assign_acl (

-- 該段命令意思是允許訪問acl名為utl_http.xml下授權的使用者,使用oracle網路訪問包,所允許訪問的目的主機,及其埠範圍。

, host =

>

'127.0.0.1'

,-- 且建議使用ip位址或者使用網域名稱,若用localhost,當oracle不是安裝在本機上的情況下,會出現問題

lower_port =

>80,

-- 允許訪問的起始埠號

upper_port =

>

null

-- 允許訪問的截止埠號);

commit

;end

;

如果開啟 acl 許可權的時候提示說 acl 檔案已經存在,則將 acl 引數的值簡單修改一下,這樣會覆蓋掉原來的資料。

select

*from dba_network_acl_privileges ;

ora-06512: 在 "sys.utl_http", line 368

ora-06512: 在 "sys.utl_http", line 1118

ora-29273: http 請求失敗

ora-24247: 網路訪問被訪問控制列表 (acl) 拒絕

如果使用者並未指定 acl 許可權(訪問控制列表)的話不能直接訪問網際網路,需要執行第 2 步開啟 acl 許可權。

ora-444416: acl 無效: 無法解析的主使用者 '***'

ora-06512: 在 "sys.dbms_network_acl_admin", line 252

ora-06512: 在 line2

在第 2 步 principal 指定的使用者名為小寫就會出現這個問題,改為大寫。

一直傳入英文本元和數字,某天突然傳入中文引數時既沒有呼叫介面也沒有拋異常,首先想到的就是編碼,在服務端(也就是介面中)對中文進行轉碼是沒有效果的。所以只能在 oracle 中進行轉碼,參考相關資料解決方法如下:

create or replace function url_encode(urlencode in varchar2)

return varchar2 as

begin

return utl_url.escape(urlencode, true, 'utf-8');

end;

執行這個指令碼後,在儲存過程中使用這個函式將中文引數進行轉碼即可。

Oracle遠端呼叫函式

實驗環境 庫一 12c prodcdb1 庫二 11g rocky 1.實驗準備 在12c版本的pdb庫prodcdb1中建立乙個普通使用者test oracle host01 oraenv oracle sid prodcdb1 prodcdb oracle host01 sqlplus as s...

erlang rpc 遠端呼叫

跨節點進行遠端呼叫的時候,會經常用到rpc模組提供的方法,例如rpc call rpc cast。那麼每個節點上的rpc模組是怎麼工作的呢?rpc模組的啟動過程很簡單,並沒有初始化做太多事情,以的名稱啟動了乙個gen server程序,這個gen server程序的state是乙個gb trees的...

XML RPC(遠端呼叫)

size large the xmlrpcclient size url 客戶端的配置要設定下面幾個物件。img 例子如下 利用預設的transportfactory的客戶端 片段 public static void main string args throws exception intege...