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

Как убрать BOM из SOAP-запросов в RAD Studio 11 при компиляции для Android

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

При разработке мультиплатформенных приложений в RAD Studio 11 с использованием Delphi для работы в качестве SOAP-клиента с веб-сервисами OpenEdge, может возникнуть проблема с добавлением BOM (Byte Order Mark) в SOAP-запросы при компиляции приложения для Android. BOM представляет собой последовательность байтов (0xEF, 0xBB, 0xBF), которая добавляется в начало SOAP-оболочки и может вызвать ошибку парсинга на стороне сервера.

Описание проблемы

При использовании WSDL импортера для генерации типов и классов SOAP-клиента для работы с OpenEdge WEB Services в RAD Studio 11, приложения для Win32 и Win64 работают корректно. Однако, при компиляции для Android, обнаруживается, что SOAP-запросы содержат BOM в начале SOAP-оболочки, что приводит к ошибке парсинга на стороне сервера с сообщением о том, что контент не разрешен в прологе документа.

Подробности запроса

В запросе пользователя приведен пример реализации интерфейса IInvokable из WSDL импортера и несколько строк, добавленных пользователем для конфигурации THTTPRIO.

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

Для решения проблемы с BOM в SOAP-запросах при компиляции приложения для Android в RAD Studio 11, необходимо изменить настройки THTTPRIO, чтобы он не использовал UTF-8 в заголовках. Это можно сделать, установив свойство UseUTF8InHeader в False. Пример кода на Object Pascal (Delphi) с измененным параметром:

function GetLBLObj(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): LBLObj;
var
  RIO: THTTPRIO;
begin
  // ...
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  // Изменение свойства UseUTF8InHeader на False
  RIO.HTTPWebNode.UseUTF8InHeader := False;
  RIO.HTTPWebNode.Proxy := 'http://tcpmon:8081';
  // ...
end;

Альтернативный ответ

В случае, если изменение свойства UseUTF8InHeader не приводит к желаемому результату, можно рассмотреть другие методы настройки THTTPRIO, такие как использование альтернативных кодировок или настройка параметров передачи данных. Однако, в большинстве случаев, простое отключение UTF-8 в заголовках решает проблему с BOM.

Заключение

Удаление BOM из SOAP-запросов в RAD Studio 11 для Android-приложений является важной задачей для обеспечения корректной работы с веб-сервисами. Изменение свойства UseUTF8InHeader в THTTPRIO на False является простым и эффективным решением этой проблемы.

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

Проблема заключается в необходимости удаления BOM из SOAP-запросов в приложении RAD Studio 11 для Android, чтобы обеспечить их корректную обработку веб-сервисом OpenEdge, так как BOM может вызывать ошибки парсинга на стороне сервера.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-09-02 17:48:21/0.0032870769500732/0