【问题标题】:how to make a connection to a SOAP web service from a PL/SQL procedure如何从 PL/SQL 过程连接到 SOAP Web 服务
【发布时间】:2022-12-18 19:32:31
【问题描述】:

我想从 PL/SQL 过程连接到 SOAP Web 服务。但我不知道该怎么做。我是 PL/SQL 的新手,这是为了学习目的。任何人都可以用一个简单的示例脚本来解释这个过程吗? 我正在使用 Oracle SQL 开发人员 12。

我只想要一个简单的脚本,它将一个值作为请求传递并返回一个值作为响应。

【问题讨论】:

    标签: sql oracle plsql soap


    【解决方案1】:

    您可以使用函数发出请求并使用UTL_HTTP package 获取响应。

    FUNCTION putRequest_getResponse(mEnvelope VarChar2, mURL VarChar2) 
              RETURN VARCHAR2 AS
    BEGIN
        Declare
            mRet                VarChar2(32767) := '';
            mRetCLOB            CLOB := Null;
            mResponseEnvelope   VarChar2(32767);
            mTimeout            NUMBER(4) := 90;
            mReq                UTL_HTTP.req;
            mResp               UTL_HTTP.resp;
        Begin
            UTL_HTTP.SET_TRANSFER_TIMEOUT(mTimeout);
        --
            mReq := UTL_HTTP.BEGIN_REQUEST( mURL, 'POST', 'HTTP/1.1');
            UTL_HTTP.SET_HEADER(mReq, 'Content-Type', 'text/xml');
            UTL_HTTP.SET_HEADER(mReq, 'Content-Length', length(mEnvelope));
            UTL_HTTP.SET_HEADER(mReq, 'SOAPAction', mURL);
            UTL_HTTP.WRITE_TEXT(mReq, mEnvelope);
        --  
            mResp := UTL_HTTP.GET_RESPONSE(mReq);
            UTL_HTTP.READ_TEXT(mResp, mResponseEnvelope);
            UTL_HTTP.END_RESPONSE(mResp);
        --
            mRet := mResponseEnvelope;
        --
          RETURN mRet;
        Exception
            WHEN OTHERS THEN
                mRet := 'ERR - putRequest_getResponse' || Chr(10) || SQLERRM;
                Return(mRet);
        End;
    END putRequest_getResponse;
    

    根据您与之通信的 Web 服务,可能会有一些小差异,但这是我使用的功能。
    问候...

    【讨论】:

    • 当我使用 UTL_HTTP 执行函数时,出现此错误“HTTP 请求失败”、“网络访问被访问控制列表拒绝”。该怎么办?
    • @HarikrishnanAnilkumar 你应该有使用它的特权。询问您的 dba 或者是否可以 - 连接到具有数据库 SYSDBA 权限的 SYS 用户并检查以下 sql 的输出:select acl , principal , privilege , is_grant from DBA_NETWORK_ACL_PRIVILEGES
    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多