Ошибка ORA-29259: достигнут конец ввода при вызове utl_http.begin_request

#oracle #api #soap #oracle11g

#Oracle #API #soap #oracle11g

Вопрос:

Я пытаюсь подключиться к SOAP API Royal Mail, но не могу пройти стадию запроса begin.

В кошелек добавлены сертификаты, он отлично работает для DPD и других веб-API.

 DECLARE
    wk_http_request utl_http.req;
BEGIN
    utl_http.set_wallet('file:/app/oracle/admin/A11/wallet', NULL);
    wk_http_request := utl_http.begin_request('https://api.royalmail.net/shipping/v2', 'POST', utl_http.http_version_1_1);
END;
/  
  

Выдает ошибку:

 ORA-29259: end-of-input reached
ORA-06512: at "SYS.UTL_HTTP", line 1128
ORA-06512: at line 5
29259. 00000 -  "end-of-input reached"
*Cause:    The end of the input was reached.
*Action:   If the end of the input is reached prematurely, check if the input
           source terminates prematurely.  Otherwise, close the connection
           to the input.
  

Я получаю то же самое, независимо от того, включаю ли я строку set wallet или нет.

Это выполняется без ошибок:

 DECLARE
    wk_http_request utl_http.req;
BEGIN
    utl_http.set_wallet('file:/app/oracle/admin/A11/wallet', NULL);
    wk_http_request := utl_http.begin_request('https://api.dpd.co.uk', 'POST', utl_http.http_version_1_1);
END;
/
  

Может ли кто-нибудь подключиться к API Royal Mail через Oracle PL / SQL?
Наша версия 11.2.0.3.0.

Ответ №1:

Я сталкиваюсь с той же ошибкой с Oracle DB 11.2.0.4 и пытаюсь подключить oracle ERP Cloud и oracle Integration Cloud Service.

Мое исследование показало, что Oracle 11g необходимо исправить, чтобы использовать TLS 1.2 в соответствии с этой ссылкой .

Вот список сертификатов TLS, которые обрабатывает royalmail

Список TLS, поддерживаемых https://api.royalmail.net

И вот список сертификатов TLS, которые api.dpd.co.uk ручки

Список TLS, поддерживаемых https://api.dpd.co.uk

Oracle 11g изначально не работает с TLS 1.2, поэтому вам необходимо исправить вашу базу данных, чтобы использовать этот сертификат.

Надеюсь, это может помочь.

Комментарии:

1. Спасибо, Хорхе, у меня есть еще одна тестовая база данных, созданная с 11.2.0.4, и мы применили исправление для обработки TLS 1.2. Это избавляет нас от этой проблемы. Теперь я получаю ошибку «Недействительный сертификат», хотя у нас есть все сертификаты в кошельке Oracle.

2. Вы получаете ошибку ORA-29024 ?, Если да, то в соответствии с документацией вам следует проверить сертификат, чтобы определить, является ли он действительным, убедиться, что кошелек сервера имеет соответствующие точки доверия для проверки сертификата клиента, или убедиться, что сертификат не был отозван(повторно загрузите сертификаты). Также я думаю, что эта ссылка может быть полезной oracle-base.com/articles/misc/utl_http-and-ssl . Желаю вам удачи!!

3. Спасибо, Хорхе, это полезная ссылка, я дам все, что он предлагает попробовать. Мы придумали обходной путь через обратный прокси-сервер.