从PL / SQL调用REST服务

时间:2018-08-27 06:14:37

标签: rest

我正在尝试从PL / Sql发出HTTP请求。我需要使用访问令牌进行身份验证,而不是用户名和密码。请提出用于传递访问令牌的标准API或代码。

代码:

    DECLARE
        obj           json;
        val_          json_value;
        el_val      BOOLEAN;
        req            utl_http.req;
        res            utl_http.resp;
        url             VARCHAR2(4000) := 'http://acdl-act- 
        dev.azurewebsites.net/apiconn/push';
        name        VARCHAR2(4000);
    buffer        CLOB;
    l_chunk     VARCHAR2(32000);
    content      CLOB := '{ "User_Name":"John","City":"Delhi", "Operation":"I"';
BEGIN
    req := utl_http.begin_request( url, 'POST', ' HTTP/1.1');
    utl_http.set_header( req, 'user-agent', 'mozilla/4.0');
    utl_http.set_header( req,'content-type', 'application/x-www-form-urlencoded' );
    utl_http.set_header( req,'Content-Length', length(content));
-- utl_http.set_authentication(r => req, username    => p_user_name, password    => p_pwd,scheme      => 'Basic',for_proxy   => false);
-- Need to use access token for authentication ex: 'adghjcjhdnmfbhjd367dsbasfkjhkdfsf38789734bcff'
        utl_http.write_text(req, content);
        res := utl_http.get_response(req);
      -- process the response from the HTTPS call
        BEGIN
            LOOP
                utl_http.read_line(res, buffer);
            END LOOP;
            utl_http.end_response(res);
        EXCEPTION
            WHEN utl_http.end_of_body THEN
                utl_http.end_response(res);
        END;
END ws_call_code;
/

2 个答案:

答案 0 :(得分:0)

阅读Oracle文档” https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS71082

过程UTL_HTTP.SET_AUTHENTICATION具有以下用法说明 *

  

受支持的身份验证方案是HTTP基本和Amazon S3   身份验证。

*

答案 1 :(得分:0)

我知道这个年龄很大,但是如果有人正在寻找相同的信息。我只需要使用OAuth令牌访问REST Web服务,就需要使用令牌utl_http.set_header(l_http_request,'Authorization',l_token)设置标头。