2017-02-15 1 views
0

Ich habe die folgende Art und Weise versucht, den HTTP-Aufruf zu machen:Anfrage Body of REST Anruf mit UTL_HTTP durch Oracle 12c DB mit 78000 Zeichen

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; 

Ich versuchte, den WRITE_RAW und write_text mit auf die HTTP-Anforderung, aber keiner hat geholfen.

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

Ich habe auch versucht, die Anfrage Körper in Stücke zu brechen, aber es hat auch nicht geholfen.

Die Anfrage innerhalb von 30000 Zeichen Grenzen funktionieren gut, aber wenn sie diese Grenze überschreiten, schlägt es fehl.

Bitte schlagen Sie oder Rat auf dem Weg, um diese Anfrage Körper mit solch großen Datenmenge in Oracle 12c senden.

Antwort

0

Wenn Sie Apex in der Datenbank installiert haben, ist vielleicht die Verwendung von apex_web_service.make_rest_request eine Option für Sie. Es sendet und empfängt Clob-Daten.

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

Beispiel

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

Ja, dachten wir, von dieser Möglichkeit Gebrauch, aber wir haben das nicht in unserer DB installiert. Bitte schlagen Sie, falls möglich, eine andere Alternative vor. –

+0

Das vielleicht: https://apexplained.wordpress.com/2016/03/21/utl_http-and-a-multiformatformdata-request-body/ – Rene

Verwandte Themen