如何使用apex_web_service.make_rest_request传递JSON请求体?
问题解答
1. 能否使用apex_web_service.make_rest_request传递JSON请求体?
完全可以。apex_web_service.make_rest_request支持通过p_body参数传递JSON格式的请求体,同时需要指定对应的p_content_type为'application/json',并匹配正确的HTTP方法(如POST、PUT)。
示例代码:
DECLARE l_response CLOB; l_json_body CLOB := '{"key1": "value1", "key2": 123}'; BEGIN l_response := apex_web_service.make_rest_request( p_url => 'https://your-api-endpoint.com', p_http_method => 'POST', p_body => l_json_body, p_content_type => 'application/json' ); -- 处理响应 DBMS_OUTPUT.PUT_LINE(l_response); END; /
2. 解决PLS-00201: identifier 'UTL_HTTP' must be declared错误
你遇到的权限问题,本质是apex_web_service内部依赖UTL_HTTP,但当前用户没有直接访问UTL_HTTP的权限。可行的解决方式如下:
- 在APEX应用上下文内调用:如果代码是在APEX应用的页面处理、进程、触发器或PL/SQL动态内容中执行,APEX的运行时用户(通常是
APEX_PUBLIC_USER或应用解析用户)已拥有调用UTL_HTTP的权限,你的代码会继承该权限,不会触发此错误。 - 请求管理员授予
APEX_WEB_SERVICE执行权限:若必须在APEX之外调用该包,需管理员执行以下授权语句(因你非管理员,此条仅作参考):
GRANT EXECUTE ON APEX_WEB_SERVICE TO your_user;
注:即使授予APEX_WEB_SERVICE执行权限,部分环境仍可能需要管理员配置网络访问控制(如UTL_HTTP.set_wallet或访问控制列表),但核心的UTL_HTTP权限问题会通过授权间接解决。
内容的提问来源于stack exchange,提问作者Kyujiin
相关产品推荐
相关产品推荐

