Если Вы используете встроенный пакет utl_http, то возможно Вы сталкивались с проблемой кодировок при отправке текстовых данных на кириллице. Для решения данной проблемы необходимо воспользоваться методов escape встроенного пакета utl_url:
utl_url.escape('Привет, мир!', true, 'utf-8')
Данный метод возвращает строку, готовую к отправке. Ниже приведен пример:
declare
req utl_http.req;
res utl_http.resp;
url varchar2(4000) := 'http://some_address:port?test=1';
l_data varchar2(100);
begin
l_data := 'Привет, мир!';
l_data := utl_url.escape(l_data, true, 'utf-8');
utl_http.set_response_error_check(false);
req := utl_http.begin_request(url, 'POST', 'HTTP/1.1');
/* if need proxy connection
utl_http.set_proxy('company.proxy.com:port', '');
utl_http.set_authentication(req, 'user', 'password', for_proxy => true);
*/
utl_http.set_header(req, 'Content-Type', 'charset=UTF-8');
utl_http.set_header(req, 'Content-Length', length(l_data));
utl_http.set_header(req, 'Content-Encoding', 'UTF-8');
-- send post data
utl_http.write_text(req, l_data);
res := utl_http.get_response(req);
utl_http.end_response(res);
/* if need check status code
res.status_code
*/
exception
when utl_http.end_of_body then
utl_http.end_response(res);
when others then
dbms_output.put_line(sqlerrm);
end;