oracle 使用apex_web_service传递JSON请求正文

nwsw7zdq  于 2023-05-22  发布在  Oracle
关注(0)|答案(2)|浏览(249)

请问是否有一种方法可以使用apex_web_service.make_rest_request传递JSON请求体?
我们正在使用的用户没有使用UTL_HTTP的权限,它返回“PLS-00201:必须声明标识符'UTL_HTTP'“,并且我不能没有更改特权的权限,因为我不是管理员。

b0zn9rqh

b0zn9rqh1#

当然,这就是p_body参数的作用。查看APEX_WEB_SERVICE的API文档。https://docs.oracle.com/en/database/oracle/apex/22.1/aeapi/MAKE_REST_REQUEST-Function.html#GUID-C77BB45A-8968-470C-8243-BADB63743DE9

l7wslrjt

l7wslrjt2#

您可以从APEX中的示例页面项构建json:

declare
    l_response clob;
    l_request_body clob;
    l_obj JSON_OBJECT_T := JSON_OBJECT_T();
begin

    l_obj.put('name', :P1_NAME);
    l_obj.put('age', :P1_AGE);
    

    apex_web_service.g_request_headers(1).name := 'Content-type'; 
    apex_web_service.g_request_headers(1).value := 'application/json';
        
    l_response := apex_web_service.make_rest_request(
        p_url => 'some_service_url'
        , p_http_method => 'PUT'
        , p_body => l_obj
        );
            
    if apex_web_service.g_status_code != 200 then
        raise_application_error(-20001,'Error: Request failed');
    end if;

end;

相关问题