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

如何在PL/SQL中打印最终的UTL_HTTP请求头?

PL/SQL 打印SOAP请求的UTL_HTTP请求头

以下是完整的PL/SQL代码示例,实现设置SOAP请求所需的UTL_HTTP请求头,并通过DBMS_OUTPUT.put_line打印所有已设置的请求头:

DECLARE
    l_http_req      UTL_HTTP.req;
    l_header_name   VARCHAR2(256);
    l_header_value  VARCHAR2(1024);
BEGIN
    -- 初始化HTTP请求,替换为实际的SOAP服务端点
    l_http_req := UTL_HTTP.begin_request('https://your-soap-service-endpoint.com', 'POST');

    -- 设置SOAP请求头字段
    UTL_HTTP.set_header(l_http_req, 'Content-Type', 'text/xml; charset=utf-8');
    UTL_HTTP.set_header(l_http_req, 'SOAPAction', '"http://example.com/soap/operation"');
    UTL_HTTP.set_header(l_http_req, 'Authorization', 'Basic dXNlcmlkOnBhc3N3b3Jk');
    UTL_HTTP.set_header(l_http_req, 'Accept-Encoding', 'gzip, deflate');

    -- 遍历并打印所有请求头
    DBMS_OUTPUT.put_line('=== 已设置的UTL_HTTP请求头 ===');
    -- 获取第0个默认头(HTTP版本信息)
    UTL_HTTP.get_header(l_http_req, 0, l_header_name, l_header_value);
    DBMS_OUTPUT.put_line(l_header_name || ': ' || l_header_value);
    
    -- 遍历自定义设置的请求头
    FOR i IN 1..UTL_HTTP.get_header_count(l_http_req) LOOP
        UTL_HTTP.get_header(l_http_req, i, l_header_name, l_header_value);
        DBMS_OUTPUT.put_line(l_header_name || ': ' || l_header_value);
    END LOOP;

    -- 关闭请求,释放资源
    UTL_HTTP.end_request(l_http_req);
EXCEPTION
    WHEN OTHERS THEN
        -- 异常时确保请求被关闭
        IF UTL_HTTP.is_open(l_http_req) THEN
            UTL_HTTP.end_request(l_http_req);
        END IF;
        RAISE;
END;
/

代码说明

  • 使用UTL_HTTP.begin_request初始化POST请求,需替换为实际的SOAP服务端点地址
  • 通过UTL_HTTP.set_header配置各类请求头:编码格式、SOAPAction标识、Basic认证信息等
  • 调用UTL_HTTP.get_header_count获取请求头总数,配合循环遍历所有请求头
  • 利用UTL_HTTP.get_header逐个提取请求头的名称与值,通过DBMS_OUTPUT.put_line输出
  • 异常处理块确保请求在出错时也能被正确关闭,避免数据库资源泄漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:02:04