Ora 06502 для токена-носителя apex_web_service.g_request_headers PLSQL - PullRequest
0 голосов
/ 26 мая 2020

Мне сложно сделать запрос GET с сервера с токеном на предъявителя. Чтобы сделать запрос, я сделал функцию, которая находится ниже, и я получаю сообщение об ошибке Ora-06512 в строке с bearer. Отправить запрос от почтальона - не проблема. Я получил ответ json. Однако с PL SQL я все еще не могу этого сделать.

Моя функция

   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 почтальона (который отлично работает) выглядит так

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

Ошибка img enter image description here

1 Ответ

0 голосов
/ 26 мая 2020
    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; 

Используйте этот формат, а затем попробуйте

...