BEGIN
UTL_HTTP.SET_TRANSFER_TIMEOUT(600);
l_req := utl_http.begin_request(l_url, 'POST');
utl_http.set_header(l_req,
'Content-Type',
'application/xml;charset=UTF-8');
Utl_Http.Set_Header(l_req, 'Content-Length', Length(p_message));
UTL_HTTP.SET_BODY_CHARSET(l_req, 'UTF-8');
utl_http.set_authentication(r => l_req,
username => l_usename,
password => l_password);
utl_http.write_text(l_req, p_message);
l_resp := utl_http.get_response(l_req);
--获取返回信息
LOOP
utl_http.read_line(l_resp, L_return_msg, TRUE);
--dbms_output.put_line(l_text);
IF x_return_status <> 'S' THEN
x_return_msg := x_return_msg || ' 报文信息:' || L_return_msg;
RETURN;
end if;
END LOOP;
utl_http.read_line(l_resp, L_return_msg, TRUE);
utl_http.end_response(l_resp);
EXCEPTION
WHEN utl_http.end_of_body THEN
utl_http.end_response(l_resp);
WHEN UTL_HTTP.TRANSFER_TIMEOUT THEN
UTL_HTTP.END_RESPONSE(l_resp);
x_return_status := 'E';
x_return_msg := 'HTTP请求超时失败:' || 'DBS' || to_char(SQLCODE) || ':' ||
substr(SQLERRM, 1, 128);
WHEN OTHERS THEN
x_return_status := 'E';
x_return_msg := SQLCODE || SQLERRM;
utl_http.end_response(l_resp);
end;