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

Скрытие интерфейсов IAppServer и IAppServerSOAP на главной странице веб-сервиса в Delphi

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

Иногда в процессе разработки веб-сервисов на языке Object Pascal (Delphi) возникает потребность скрыть некоторые стандартные интерфейсы, такие как IAppServer и IAppServerSOAP, которые отображаются по умолчанию на главной странице веб-сервиса. Это может быть нежелательным, если клиентские программы не используют эти интерфейсы напрямую.

Проблема

На главной странице веб-сервиса по умолчанию отображаются интерфейсы IAppServer и IAppServerSOAP, которые являются предками пользовательского интерфейса веб-сервиса. Хотя клиентские программы не используют эти интерфейсы, они все равно отображаются, что может вызвать путаницу.

Решение

Для решения этой проблемы можно использовать несколько подходов. Один из них заключается в изменении WSDL, возвращаемого сервисом, с помощью компонента TWSDLHTMLPublish, добавленного на форму WebModule. В обработчике события OnBeforePublishingWSDL можно переопределить WSDL, исключив нежелательные интерфейсы.

Однако, как было отмечено в комментариях, данный подход не решает проблему изменения начальной страницы веб-сервиса. В таком случае, можно воспользоваться другим методом: редактирование метода WebModule2DefaultHandlerAction, который является обработчиком события OnAction элемента WebActionItem с именем DefaultHandler.

В этом методе был добавлен вызов процедуры HideInterfaces, которая принимает содержимое ответа и список интерфейсов для скрытия. Процедура HideInterfaces удаляет строки из HTML-контента, содержащие нежелательные интерфейсы.

procedure HideInterfaces(var aContent: String; aInterfaces: array of string);
var
  Intf: String;
  i: Integer;
begin
  if Length(aInterfaces) = 0 then
    Exit;

  with TStringList.Create do
  try
    // Удаляем все символы перевода строки
    aContent := StringReplace(aContent, #13#10, ' ', [rfReplaceAll]);

    // Разделяем контент на строки, используя TR
    Text := StringReplace(aContent, '<tr>', #13#10'<tr>'#13#10, [rfReplaceAll, rfIgnoreCase]);
    Text := StringReplace(Text, '</tr>', #13#10'</tr>'#13#10, [rfReplaceAll, rfIgnoreCase]);

    // Проходим по каждой строке, чтобы найти и скрыть интерфейсы
    for Intf in aInterfaces do
    begin
      for i := 0 to Pred(Count) do
      begin
        if Pos(LowerCase(Intf), LowerCase(Strings[i])) > 0 then
          Break;
      end;

      // Если интерфейс найден, удаляем соответствующие строки таблицы
      if i < Count then
      begin
        Delete(i + 1);
        Delete(i);
        Delete(i - 1);
      end;
    end;

    aContent := Text;
  finally
    Free;
  end;
end;

Также был предложен альтернативный подход: отказ от реализации интерфейсов IAppServer и IAppServerSOAP, что возможно, если ваши клиентские приложения не зависят от них. В этом случае можно использовать класс-предок, который не включает эти интерфейсы, например, TDataModule или TInvokableClass.

Подтвержденное решение

В итоге был найден способ скрыть нежелательные интерфейсы, отредактировав метод WebModule2DefaultHandlerAction и добавив в него вызов процедуры HideInterfaces. Этот метод позволяет удалить упоминания интерфейсов из HTML-контента ответа веб-сервиса.

Заключение

Скрытие интерфейсов IAppServer и IAppServerSOAP на главной странице веб-сервиса в Delphi может быть выполнено с помощью изменения HTML-контента ответа сервиса. Это может быть полезным, если клиентские программы не используют эти интерфейсы, и их присутствие на странице вводит в заблуждение. Приведенный выше код может служить примером реализации такого подхода.

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

Необходимо скрыть интерфейсы IAppServer и IAppServerSOAP на главной странице веб-сервиса, разработанного в Delphi, чтобы убрать нежелательные для пользователя элементы, которые не используются клиентскими приложениями.


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

Получайте свежие новости и обновления по 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:39:06/0.003324031829834/0