【问题标题】:Cannot reach web service with Oracle PL/SQL无法使用 Oracle PL/SQL 访问 Web 服务
【发布时间】:2020-11-23 22:53:31
【问题描述】:

我会从 PL/SQL Oracle 11g 调用 Web 服务,但以下脚本不起作用:

declare
v_Endpoint varchar2(500) := '<my_endpoint>';
v_Http_Req Utl_Http.Req;
begin
Utl_Http.Set_Wallet('<my_wallet_path>','<my_wallet_password>');
Utl_Http.Set_Proxy('<proxy_url>:<proxy_password>@<proxy-url>:8080');
v_Http_Req := Utl_Http.Begin_Request(v_Endpoint, 'POST', 'HTTP/1.1');

exception
when others then
DBMS_OUTPUT.PUT_LINE('EXCEPTION: '||SQLERRM);
DBMS_OUTPUT.PUT_LINE('EXCEPTION: '||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
DBMS_OUTPUT.PUT_LINE('EXCEPTION: '||UTL_HTTP.GET_DETAILED_SQLERRM);
end;

EXCEPTION: ORA-29273: richiesta HTTP non riuscita
ORA-06512: a "SYS.UTL_HTTP", line 1130
ORA-53203: violazione di sicurezza
EXCEPTION: ORA-06512: a "SYS.UTL_HTTP", line 1130
ORA-06512: a line 7

EXCEPTION: ORA-53203: violazione di sicurezza

Procedura PL/SQL completata correttamente.

使用 SOAPUI 可以毫无问题地连接到端点。我可以使用代理 :8080/script_proxy.pac 在浏览器中打开 URL 钱包包含从 下载的证书。 我已在 ACL 中插入 URL test.salesforce.com 并授予运行我的脚本的用户访问权限。

我怎样才能找出问题所在?

【问题讨论】:

    标签: oracle web-services plsql oracle11g oracle-wallet


    【解决方案1】:

    您可能需要定义 ACL 来访问外部网络服务。检查输出:

    SELECT * FROM DBA_NETWORK_ACLS;
    SELECT * FROM DBA_NETWORK_ACL_PRIVILEGES;
    

    并检查文档到CREATE_ACL Procedure:

    DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
       acl             IN VARCHAR2,
       description     IN VARCHAR2,
       principal       IN VARCHAR2,
       is_grant        IN BOOLEAN,
       privilege       IN VARCHAR2,
       start_date      IN TIMESTAMP WITH TIMEZONE DEFAULT NULL,
       end_date        IN TIMESTAMP WITH TIMEZONE DEFAULT NULL );
    

    【讨论】:

    • 钱包中的证书错误:我已将其替换为证书根。我已经按照您的建议设置了 ACL。权限是“连接”和“解决”。它有效!
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多