Hi all,
I am using this stored procesure to send / upload a liste of files via REST API to another server defined by the variable l_url, which is developed with Java SpringBoot.
-- Looping
for i in 1..l_Files.count LOOP
apex_web_service.g_request_headers.delete();
apex_web_service.clear_request_cookies;
apex_web_service.clear_request_headers;
apex_json.initialize_clob_output;
apex_json.open_object;
apex_json.open_object('uploadPart');
apex_json.write('parm1', pParm1);
apex_json.write('parm2', pParm2);
apex_json.close_object;
apex_json.close_object;
l_body := apex_json.get_clob_output( p_free => true );
-- Get the details of each files
SELECT f.blob_content ,f.name
INTO l_fileBlob ,l_tmpFile
FROM apex_application_temp_files f
WHERE f.name = l_Files(i);
-- The format of l_tmpFile is 21470730095421212/toto.MSI, need to get rid of all strings up to '/'
l_filename := substr(l_tmpFile ,instr(l_tmpFile, '/') + 1);
apex_debug.info ('==> uploading : |%s| |%s| |%s| |%s|' ,i ,l_tmpFile ,l_filename ,dbms_lob.getlength(l_fileBlob));
apex_web_service.APPEND_TO_MULTIPART (
p_multipart => lm_multipart,
p_name => 'uploadPart',
p_content_type => 'application/json',
p_body => l_body );
apex_web_service.APPEND_TO_MULTIPART (
p_multipart => lm_multipart,
p_name => 'attachment',
p_filename => l_filename,
p_content_type => 'application/octet-stream',
p_body_blob => l_fileBlob );
l_blob := apex_web_service.make_rest_request_b(
p_url => l_url,
p_http_method => 'POST',
p_body_blob => apex_web_service.generate_request_body(lm_multipart)
);
apex_debug.info ('==> g_status_code: %s', apex_web_service.g_status_code);
end loop;
If I send just 1 file, it works OK.
The problem is when I send 2 files ( file1.txt et file2.txt ). The first iteration, all variables ( lm_multipart, l_filename, and l_fileBlob ) are correctly setup and SpringBoot received correctly.
But on the second iteration, as shown below, despite all varibles are also correctly setup / displayed, SpringBoot still receives the previous values. As if the multipart is never updated ( still the values from the first iteration ).

What do I need to configure in order to call a webservice repeatedly ?