我正在尝试使用UTL_HTTP通过来自Oracle的HTTP post请求发送数据。代码如下:
REQ := UTL_HTTP.BEGIN_REQUEST(URL,'POST','HTTP/1.1')
UTL_HTTP.SET_HEADER(REQ,'USER-AGENT','MOZILLA/4.0')
UTL_HTTP.SET_HEADER(REQ,'CONENT-LENGT',LENGTH(V_BODY)
UTL_HTTP.SET_HEADER(REQ,'CONTENT-TYPE','APPLICATION/JSON')
UTL_HTTP.SET_HEADER(REQ,'SDATE','01/06/2021')
UTL_HTTP.WRITE_RAW(REQ,UTL_RAW.CAST_TO_RAW(V_BODY)
RES := UTL_HTTP.GET_RESPONSE(REQ);
UTL_HTTP.READ_TEXT(RES,BUFFER);
在V_BODY参数内部是一个存根,其中包含JSON和我从数据库中选择的这个json,然后放入一个存根中。现在,当选择的数据记录了大约50到100个请求时,请求工作得很好,但是我需要发送一百万条记录,当我尝试发送这样的请求时,当我将clob作为参数时,它会失败。它就像http请求一样,不允许我发送这么大的数据。处理这个问题的最好方法是什么,或者有没有办法以较小的块发送它?
发布于 2021-08-05 03:41:42
您可以使用标头来告诉目标,您将以块的形式发送数据。
utl_http.set_header (l_request, 'Transfer-Encoding', 'chunked');
然后使用您喜欢的分割机制分批发送数据
utl_http.write_raw(l_request, [first 32k]);
utl_http.write_raw(l_request, [next 32k]);
等等。
如果这不起作用,这可能是接收器的问题,因为并不是所有的web服务器都会愉快地接受分块请求。
https://stackoverflow.com/questions/68657018
复制相似问题