Я пытаюсь вызвать веб-сервис, используя Oracle UTL_HTTP.request
API. Для вызова требуется прокси и кошелек / сертификат. Я полагаю, что я устранил проблемы с сертификатом, поскольку я больше не получаю ошибку ORA-29024: Certificate validation failure
. Теперь я получаю ORA-29259: end-of-input reached
ошибку. Я использую СУБД версии 12.1.0.2.0 и должен использовать TLS 1.2 (не уверен, как это проверить).
Следующий вызов работает отлично и возвращает полезную нагрузку JSON:
SELECT utl_http.request (
'http://jsonplaceholder.typicode.com/todos/1',
'proxy.myurl.com')
FROM dual;
Ответ:
{
"userId": 1,
"id": 1,
"title": "delectus aut autem",
"completed": false
}
Следующий вызов выдает ошибку ORA-29259:
SELECT utl_http.request (
'https://service.baseurl.com/ping',
'proxy.myurl.com',
'file:/my/wallet/location',
'mypassword'
)
FROM DUAL;
Стек исключений во время выполнения:
ORA-29273: HTTP request failed
ORA-29259: end-of-input reached
ORA-06512: at "SYS.UTL_HTTP", line 1491
ORA-06512: at line 1
Я также пытался вызвать UTL_HTTP.begin_request
с помощью анонимного блока PL / SQL, но по сути получаю ту же ошибку ORA-29259
, что и выше.
DECLARE
l_http_request utl_http.req;
l_http_response utl_http.resp;
l_text VARCHAR2(32767);
BEGIN
utl_http.set_proxy('proxy.myurl.com');
utl_http.set_wallet('file:/my/wallet/location'
,'mypassword');
l_http_request := utl_http.begin_request('https://service.baseurl.com/ping'
,'POST', 'HTTP/1.1');
l_http_response := utl_http.get_response(l_http_request);
BEGIN
LOOP
utl_http.read_text(l_http_response, l_text, 32766);
dbms_output.put_line(l_text);
END LOOP;
EXCEPTION WHEN utl_http.end_of_body THEN
utl_http.end_response(l_http_response);
END;
END;
ORA-29273: HTTP request failed
ORA-29259: end-of-input reached
ORA-06512: at "SYS.UTL_HTTP", line 1258
ORA-06512: at line 10
Любые идеи о том, что может быть причиной этой ошибки?