Я пытался заставить Oracle вызывать REST API. Во время настройки и запуска мы столкнулись с проблемой, из-за которой наш код генерирует ORA-53203: нарушение безопасности. В процессе выявления проблемы мы создали процедуру для проверки соединения, и это также приводит к той же ошибке.
Мы используем Oracle 12c, и мы настроили записи ACE / ACL для хоста, с которым мы тестируем, для разрешений «подключаться» и «разрешать».
create or replace procedure showTitleTag ( i_url in varchar2 )
AS
l_httpreq UTL_HTTP.req;
l_httpresp UTL_HTTP.resp;
l_text varchar2(32767);
l_response CLOB;
l_title varchar2(32767);
BEGIN
l_httpreq := UTL_HTTP.begin_request(i_url);
l_httpresp := UTL_HTTP.get_response(l_httpreq);
BEGIN
LOOP
UTL_HTTP.read_text(l_httpresp, l_text, 32766);
l_response := l_response || l_text;
END LOOP;
EXCEPTION
WHEN UTL_HTTP.end_of_body THEN
UTL_HTTP.end_response(l_httpresp);
END;
l_title := REGEXP_REPLACE(l_response, '.*<title> ?(.+) ?</title>.*', '\1', 1, 1, 'in');
DBMS_OUTPUT.put_line(l_title);
EXCEPTION
WHEN OTHERS THEN
UTL_HTTP.end_response(l_httpresp);
RAISE;
END;
Этот код должен давать нам содержимое тега заголовка веб-страницы (мы использовали "http://www.redhat.com" в качестве нашего тестового URL). Вместо этого мы получаем следующие ошибки:
ORA-29273: HTTP request failed
ORA-53203: security violation
ORA-06512: at "APPS.SHOWTITLETAG", line 29
ORA-06512: at line 1