web-services - сервис - как работать с soap



SOAP-сервер и клиентское приложение VCL+indy demo для Delphi XE? (1)

Я опубликовал полный набор демонстраций для SOAP на CodeCentral в качестве пункта 28789 .

Они содержат каждую из демонстрационных WebServices SOAP от Delphi 2007 от папки WebServices , теперь обновленной для Delphi XE и XE2, включая преобразование старых WAD-серверов в новые серверы INDY VCL. Вы бы подумали, что это впечатляет, но это не так. Это очень легко. Просто используйте мастер для создания нового проекта, а затем добавьте в проект интерфейс веб-службы и блоки реализации и любые другие элементы, принадлежащие старой демонстрационной версии. Как только они добавляются в проект, они просто работают. Базовую демонстрацию SOAP-серверов действительно легко построить в Delphi, как только у вас будет рабочая демонстрация, вы обнаружите, что ее легко модифицировать и расширять.

Демонстрация, которая наилучшим образом отвечает на вопрос, который я задал выше, находится в SOAPDataModule .

Основные проблемы с демо с эпохи 2007 года - два:

  1. WAD (отладчик веб-приложений) исчез. вам нужно создать новый сервер с помощью сервера Indy для оптимальных целей демонстрации, избавив вас от использования WAD (который ушел) или настройки среды ISAPI в IIS, что вряд ли идеально подходит для демонстрационных целей. Новый демонстрационный проект, который я создал, называется SoapDMServerINDY и состоит из модуля данных (datamod_u.pas), модуля пользовательского интерфейса формы VCL ( IndyServerVCLFormUnit.pas ) и веб-модуля Indy Server под названием IndyServerWebModule.pas .

  2. Демо-версия Delphi 2007 появилась благодаря новой практике наличия подпапки Debug / Win32, в которой сейчас работает демонстрационный исполняемый файл, вам нужно идти дальше. Я установил демо-сервер так, чтобы он предупреждал вас с сообщением об ошибке, если файлы данных не могут быть найдены, что избавит вас от таинственной «ошибки синтаксического анализа XML». Я также добавил некоторые проверки ошибок в нескольких демонстрационных примерах, так что он говорит вам, что вам нужно установить interbase для работы этой демонстрации, поскольку для некоторых демонстраций требуется, чтобы Interbase был установлен и запущен, а один требует, чтобы псевдоним IBLOCAL существовал, и предпочтительно, чтобы таблица, называемая EMPLOYEE существовала.

Элементами этой демонстрации являются сервер ( SoapDMServerINDY , на основе кода из SOAPDMServerWAD) и клиентский SOAPDMClient, который подключается к демоверсии и имеет две страницы, на одной странице будет отображаться базовый доступ к данным через удаленный набор данных DBGrid +, а второй на странице показано, как вызвать пользовательский метод SOAP.

Чтобы использовать демонстрационную версию: вам нужно запустить сервер, нажать кнопку «Пуск», затем запустить клиент и нажать «Подключиться».

В Delphi используется папка demos для веб-сервисов, но, похоже, она больше не включает это.

Я просто попробовал демонстрационные проекты Delphi 7 ( SOAPDMServerWAD , сервер практически без интерфейса и SOAPDMClient ) и не смог заставить их функционировать, даже в Delphi 7.

Если кто-либо когда-либо делал аналогичную демонстрационную работу в Delphi XE или Delphi 2010, идентичен старым SOAPDMServerWAD+SoapDMClient , работающим в Delphi XE, и, по крайней мере, с минимальным пользовательским интерфейсом, который поступает от мастера приложений Delphi SOAP Server, который быть совершенным.

Обновление: демонстрационная версия доходит до Delphi 2010, но использует теперь устаревший WAD (веб-приложение-отладчик), я попытался перенести его в новый runtime/web-app-development-harnessing-code Indy runtime/web-app-development-harnessing-code , но я Кажется, он не работает. Демо запускается, но сервер не имеет пользовательского интерфейса и, похоже, не работает какой-либо HTTP-сервер (протестирован с использованием обычного веб-браузера через http://localhost:port/ urls. Кстати, попробуйте выполнить поиск в Google для демонстрации , и этот url появляется, и я спросил меньше часа назад. Это страшно, google.

Update2 См. Мой собственный ответ ниже, скоро появится ссылка с рабочим кодом.