2017-02-15 11 views
0

Я попытался следующий способ сделать HTTP вызов:тело запроса REST вызова с использованием UTL_HTTP через Oracle 12c DB, имеющий 78000 символов

v_doc_fin clob; 

if v_doc_fin is not null then 
     DBMS_OUTPUT.PUT_LINE (v_doc_fin); 
     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, 'content-type', 'application/json'); 
     utl_http.set_header(req, 'Content-Length', length(v_doc_fin)); 
     utl_http.write_text(req, v_doc_fin); 
     res := utl_http.get_response(req);   
     end if; 

Я попытался с помощью WRITE_RAW и write_text, чтобы сделать запрос HTTP, но ни помогли.

UTL_HTTP.write_text (req, v_doc_fin) ; 
UTL_HTTP.WRITE_RAW (r => req, data => UTL_RAW.CAST_TO_RAW(v_doc_fin)); 

Я также попытался сломать тело запроса кусками, но это тоже не помогло.

Запрос в пределах 30000 символов ограничивает работу, но когда они превышают этот предел, он терпит неудачу.

Просьба предложить или посоветоваться о том, как отправить этот орган запроса с таким большим объемом данных в Oracle 12c.

ответ

0

Если у вас установлен Apex в базе данных, возможно, вы используете apex_web_service.make_rest_request. Он отправляет и получает данные clob.

https://docs.oracle.com/database/121/AEAPI/apex_web_service.htm#AEAPI537

Пример

l_result_clob := apex_web_service.make_rest_request(p_url   => my_url 
                ,p_http_method => 'POST' 
                ,p_body  => l_content_clob); 
+0

Да, мы думали об этой опции, но мы не установлена ​​в нашей БД. Пожалуйста, предложите любой другой вариант, если это возможно. –

+0

Это возможно: https://apexplained.wordpress.com/2016/03/21/utl_http-and-a-multipartform-data-request-body/ – Rene