UTL_HTTP read_text和read_raw应用

  • Post author:
  • Post category:其他


UTL_HTTP read_text和read_raw应用

response数据量小

read_line或者 read_text

示例:

l_http_request   UTL_HTTP.REQ;

l_http_response  UTL_HTTP.RESP;

BUFFER  VARCHAR2(32767);

l_response_clob  CLOB;

xml XMLTYPE;

BEGIN

l_http_response := UTL_HTTP.GET_RESPONSE(l_http_request);

DBMS_LOB.CREATETEMPORARY(l_response_clob, TRUE, DBMS_LOB.CALL);

DBMS_LOB.OPEN(l_response_clob, DBMS_LOB.LOB_READWRITE);

BEGIN

LOOP

UTL_HTTP.READ_TEXT(l_http_response, BUFFER, 32767);

DBMS_LOB.WRITEAPPEND(l_response_clob, LENGTH(BUFFER), BUFFER);

END LOOP;

EXCEPTION

WHEN UTL_HTTP.END_OF_BODY THEN

UTL_HTTP.END_RESPONSE(l_http_response);

END;

DBMS_LOB.CLOSE(l_response_clob);

xml := XMLTYPE(l_response_clob);

… do whatever you need with XML docuemnt

DBMS_LOB.FREETEMPORARY(l_response_clob);

END;

response数据量很大

建议使用read_raw

示例

dbms_lob.createtemporary( blob_buf, true );

http_resp:= utl_http.get_response(http_req);

begin

loop

utl_http.read_raw( http_resp, raw_buf );

dbms_lob.append( blob_buf, raw_buf );

end loop;

exception

when utl_http.END_OF_BODY

then

null;

end;

utl_http.end_response( http_resp );

— 刘轶鹤



版权声明:本文为AlexLiu_2019原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。