如何在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
相关产品推荐
相关产品推荐

