Как получить доступ к веб-сервису .Net из приложения Delphi Win32? - PullRequest
4 голосов
/ 04 мая 2011

Какие варианты у меня есть, если я хочу разрешить приложению Delphi Win32 использовать веб-сервис .Net?

Можно ли взаимодействовать напрямую? Или я должен прибегнуть к посредническому программному обеспечению, например, для связи с приложением Delphi для каждого COM?

Приложение Delphi, о котором идет речь, написано в Delphi 2006, но в ближайшее время планируется его обновление до Delphi XE.

Ответы [ 3 ]

12 голосов
/ 04 мая 2011

Пока ваш проект открыт в Delphi IDE, перейдите по адресу:

Файл | Новый | Другое ... | Delphi Projects | Веб-сервисы | WSDL Импортер

Теперь запустится мастер импорта WSDL. Введите адрес WSDL для вашего веб-сервиса и нажмите Далее. Он покажет вам различные варианты обработки WSDL. Вы можете изменить параметры, если это необходимо. В конце концов, когда мастер завершит работу, в вашем проекте появится новый модуль, содержащий классы-обертки на стороне клиента и интерфейсы для вашего веб-сервиса. Теперь вы можете использовать этот класс по-разному. Самый простой метод - вызвать функцию с именем Get (Your_WebService_Name). Например, если имя вашего веб-сервиса - TestWebService, функция будет называться GetTestWebService.

Функция вернет интерфейс, представляющий тот же интерфейс, что и ваш веб-сервис, теперь вы можете вызывать методы этого интерфейса, и она автоматически передаст запрос на удаленный сервер и вернет результат вам. Пример исходного кода может выглядеть следующим образом:

var
  MyTestService: ITestService;
begin
  MyTestService := GetTestService();
  MyTestService.TestMethod;
end;

Другой вариант - настроить объект THttpRio вручную и использовать его. На самом деле это то, что функция Get (Your_WebService_Name) выполняет внутри.

1 голос
/ 18 декабря 2015

Просто добавьте строку InvRegistry.RegisterInvokeOptions(TypeInfo(xxx), ioDocument); в раздел инициализации сгенерированного импортированного файла.Он будет работать как брелок.
ПРИМЕЧАНИЕ. Xxx необходимо заменить на имя импортированного класса веб-службы.

0 голосов
/ 03 ноября 2012

Это не работает с веб-сервисом C #, точка. Клиент Delphi не понимает заголовок C # и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...