apex_web_service.g_request_headers承载令牌PLSQL的Ora 06502

问题描述 投票:0回答:1

我很难从带有Bearer令牌的服务器发出GET请求。为了发出一个请求,我做了一个下面的函数,并且在与载体一致的地方出现错误Ora-06512。从邮递员发送请求不是问题,我可以重新接收json响应。但是,使用PLSQL我仍然无法做到这一点。

我的功能

   FUNCTION get_response(ulr_path in varchar2)
        RETURN clob
        IS
           z clob;
           V_PARAM_NAMES    apex_application_global.vc_arr2;
           V_PARAM_VALUES   apex_application_global.vc_arr2;
        begin
        apex_web_service.g_request_headers(1).name    := 'Content-Type';
        apex_web_service.g_request_headers(1).VALUE   := 'application/json';
        apex_web_service.g_request_headers(2).name := 'Authorization';
        apex_web_service.g_request_headers(2).value := 'Bearer ' || TOKEN; --ORA 06512
        --apex_web_service.g_request_headers(2).name    := 'Accept';
        --apex_web_service.g_request_headers(2).VALUE   := '*/*';
        V_PARAM_NAMES(1)                              := 'fist_param_name';
        V_PARAM_VALUES(1)                             := 'first_param_value';
        V_PARAM_NAMES(2)                              := 'second_param_name';
        V_PARAM_VALUES(2)                             := 'second_param_value';
        z := APEX_WEB_SERVICE.make_rest_request(p_url               => ulr_path,
                                                 p_http_method      => 'GET',
                                                 p_proxy_override   => null,
                                                 p_transfer_timeout => 60, 
                                                 --p_password => HUMO_TOKEN,--
                                                 --p_body             => HUMO_TOKEN,                                                 
                                                 p_body_blob        => null,
                                                 p_parm_name        => V_PARAM_NAMES,
                                                 p_parm_value       => V_PARAM_VALUES
                                                 );
        RETURN z;
     END;

邮递员卷曲(效果很好)看起来像这样

curl --location --request GET 'http://huamoapay.mur.ru/api/servicea' \
--header 'Authorization: Bearer really_long_string'

错误imgenter image description here

plsql apex bearer-token
1个回答
0
投票
    apex_web_service.g_request_headers.delete();
    apex_web_service.g_request_headers(1).name := 'Content-Type';
    apex_web_service.g_request_headers(1).value := 'application/json';
    apex_web_service.g_request_headers(2).name := 'Authorization';
    apex_web_service.g_request_headers(2).value := 'Bearer ' || v_json_keyvalue; 
    l_clob :=
        apex_web_service.make_rest_request(p_url => ulr_path,
                                           p_http_method => 'GET',
                                           p_transfer_timeout => 180,
                                           p_body => null);
    v_json_obj := json_object_t.parse(l_clob);
    z := v_json_obj.get_string('id');


    return z; 

使用此格式,然后尝试

© www.soinside.com 2019 - 2024. All rights reserved.