diff --git a/database/packages/pck_net_storage.pkb b/database/packages/pck_net_storage.pkb index d4c0112..7c575e5 100644 --- a/database/packages/pck_net_storage.pkb +++ b/database/packages/pck_net_storage.pkb @@ -131,6 +131,8 @@ create or replace package body pck_net_storage as l_header_index number := 1; l_content_length number; begin + -- headers zurücksetzen - nur zur Sicherheit, damit keine alten Header übertragen werden. + apex_web_service.g_request_headers.delete; if i_content_type is not null then @@ -159,10 +161,13 @@ create or replace package body pck_net_storage as l_header_index := l_header_index + 1; */ - -- nur für BLOB (z.B. leerer Ordner) Content-Length setzen - if i_body_blob is not null + -- nur für leere BLOBs (z.B. leerer Ordner) Content-Length setzen + -- bei nicht leeren blob setzt apex_web_service.make_rest_request den content-length header automatisch, doppeltes setzen führt aber zu einem HTTP-400 API Fehler + -- bei leeren blobs (empty_blob()) wird er aber nicht automatisch gesetzt, daher müssen wir ihn manuell setzen + if i_body_blob is not null + and dbms_lob.getlength(i_body_blob) = 0 then - l_content_length := coalesce(dbms_lob.getlength(i_body_blob), 0); + l_content_length := 0; -- coalesce(dbms_lob.getlength(i_body_blob), 0); apex_web_service.g_request_headers(l_header_index).name := 'Content-Length'; apex_web_service.g_request_headers(l_header_index).value := l_content_length; l_header_index := l_header_index + 1; @@ -172,8 +177,8 @@ create or replace package body pck_net_storage as if i_body_clob is not null then - apex_debug.info('Clob Request Body used:'); - apex_debug.info(i_body_clob); + --apex_debug.info('Clob Request Body used:'); + --apex_debug.info(i_body_clob); l_response := apex_web_service.make_rest_request( p_url => i_url ,p_http_method => i_method @@ -182,7 +187,7 @@ create or replace package body pck_net_storage as ,p_wallet_path => pck_system.f_get_par_wert_by_programmid('NETSTORE_WALLET_PATH') ); else - apex_debug.info('BLOB Request Body used! Length: ' || dbms_lob.getlength(i_body_blob)); + --apex_debug.info('BLOB Request Body used! Length: ' || dbms_lob.getlength(i_body_blob)); l_response := apex_web_service.make_rest_request( p_url => i_url ,p_http_method => i_method @@ -545,13 +550,12 @@ create or replace package body pck_net_storage as raise_application_error(-20012, 'Object Key darf nicht mit / enden — zum Anlegen von Ordnern p_create_folder verwenden'); end if; - -- TEST - --l_response := f_make_request( - -- i_method => 'PUT' - -- ,i_url => f_build_url(i_object_key) - -- ,i_body_blob => i_content - -- ,i_content_type => i_content_type - --); + l_response := f_make_request( + i_method => 'PUT' + ,i_url => f_build_url(i_object_key) + ,i_body_blob => i_content + ,i_content_type => i_content_type + ); l_obj_path := f_split_object_key(i_object_key); pck_log.p_info(