You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用APEX_WEB_SERVICE.MAKE_REST_REQUEST如何获取HTTP响应错误信息

解决方法

1. 调整请求参数禁用自动抛错

调用APEX_WEB_SERVICE.MAKE_REST_REQUEST时,显式传入p_raise_error_on_http_error => FALSE,这是获取非2xx状态响应内容的核心配置。默认情况下该参数为TRUE,只要返回4xx、5xx状态码函数就会直接抛出异常,响应体、头信息等全局变量都会被重置,自然无法读取。
示例代码如下:

DECLARE
    l_resp_clob CLOB;
BEGIN
    l_resp_clob := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
        p_url                 => '你的目标请求地址',
        p_http_method         => 'POST', -- 替换为实际请求方法
        p_raise_error_on_http_error => FALSE
    );

    -- 请求完成后读取状态码判断结果
    IF apex_web_service.g_status_code NOT BETWEEN 200 AND 299 THEN
        -- 此处l_resp_clob就是非成功状态的响应体内容
        dbms_output.put_line('错误状态码:' || apex_web_service.g_status_code);
        dbms_output.put_line('错误响应内容:' || l_resp_clob);
        -- 头信息也可以正常从apex_web_service.g_headers读取
        FOR i IN 1..apex_web_service.g_headers.count LOOP
            dbms_output.put_line(apex_web_service.g_headers(i).name || ':' || apex_web_service.g_headers(i).value);
        END LOOP;
    END IF;
END;
/

2. 直接捕获异常获取调试显示的错误文本

如果你不需要完整响应体,只需要获取调试界面显示的HTTP response 405 - <message>这串内容,可以直接捕获函数抛出的异常,通过SQLERRM就能拿到完整的错误文本:

DECLARE
    l_resp_clob CLOB;
BEGIN
    l_resp_clob := APEX_WEB_SERVICE.MAKE_REST_REQUEST(
        p_url                 => '你的目标请求地址',
        p_http_method         => 'POST'
    );
EXCEPTION
    WHEN OTHERS THEN
        dbms_output.put_line('错误信息:' || SQLERRM);
END;
/

内容的提问来源于stack exchange,提问作者ES.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:54:05