Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Переход с Delphi Berlin на Rio: изменения в обработке исключений ERemotable и их последствия

Delphi , Программа и Интерфейс , Процессы и Сервисы

При работе с веб-сервисами SOAP в среде разработки Delphi Berlin, разработчики часто сталкивались с исключениями типа ERemotable, даже если HTTP-ответ содержал код ошибки 500 (внутренняя ошибка сервера). После перехода на новую версию Delphi Rio, поведение этих веб-сервисов изменилось: вместо ERemotable исключений стали возникать исключения System.net с кодом состояния HTTP 500. В данной статье мы рассмотрим, как вернуться к поведению, аналогичному Delphi Berlin, и разберемся с последствиями таких изменений.

Проблема и ее причины

Возникновение ERemotable исключений в Delphi Berlin, даже при получении HTTP-ответа с кодом 500, связано с тем, что в исходном коде библиотеки Soap.SOAPHTTPTrans в Berlin присутствует логика, игнорирующая такой код состояния. В Rio данная логика была удалена, что привело к изменению поведения при обработке ошибок.

Решение проблемы

Чтобы вернуть поведение, аналогичное Delphi Berlin, можно использовать обработчик событий FOnHttpError, предоставляемый компонентом. Пример кода, который позволяет игнорировать HTTP-ошибки с кодом 500, представлен ниже:

procedure TBaseEnotWebserviceClient.HttpError(const HTTPReqResp: THTTPReqResp; const HTTPResponse: IHTTPResponse;
  const Error: ESOAPHTTPException; var Action: TSOAPHttpErrorAction);
begin
  if HTTPResponse.StatusCode = 500 then
    Action := heaSuccess;
end;

Этот код необходимо подключить к компоненту, используемому для работы с веб-сервисами, с помощью метода SetOnHttpError.

Подтвержденный ответ

Использование указанного выше кода позволяет получить ERemotable исключения в Rio, аналогично тому, как это происходило в Berlin. Это решение работает корректно, но важно понимать возможные последствия.

Возможные последствия и альтернативные подходы

Игнорирование HTTP-ошибок с кодом 500 может иметь негативные последствия, так как такие ошибки часто указывают на серьезные проблемы в работе веб-сервиса. Разработчикам следует тщательно анализировать, действительно ли все HTTP-ошибки следует игнорировать, или же стоит настроить обработку других кодов состояния для получения аналогичного поведения, как в Berlin.

Заключение

Переход на Delphi Rio требует от разработчиков внимания к деталям поведения веб-сервисов и их обработки ошибок. Правильная настройка обработчиков исключений позволит обеспечить совместимость с предыдущими версиями и избежать неприятных сюрпризов в работе приложений.

Создано по материалам из источника по ссылке.

Контекст описания касается изменения в обработке исключений ERemotable после перехода от Delphi Berlin к Rio и последствий этих изменений для разработчиков, работающих с веб-сервисами SOAP.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 15:49:39/0.0032398700714111/0