Динамически использовать WSDL в Delphi

Как я могу использовать динамический WSDL, его операции и параметры, которые указаны в файле конфигурации программы?

Например, у нас есть файл конфигурации:

[Section]
WSDL=http://example.com/SomePub/ws/SomeService?wsdl
Username=myuser
Password=mypass
OperationName=MyOperation
ParameterName=MyParameter

т.е. мы должны использовать веб-сервис, который неизвестен, но задан (ini-file) только во время выполнения. Таким образом, мы не можем использовать мастер импорта WSDL в Delphi.

Можем ли мы написать в Delphi такую ​​программу, которая будет загружать эти настройки из конфигурации, а затем передавать данные в указанную операцию в указанном параметре на веб-службе, которая задана данным WSDL?

Ответ 1

Используя SOAPUI, импортируйте службу и выполните пробный вызов. Скопируйте необработанный запрос и сырой ответ в блокнот. Измените реальные данные с помощью "тегов" и включите каждый необработанный шаблон в качестве значения в вашем INI. Когда вам нужно сделать вызов, откройте свой INI, возьмите исходный шаблон ответа и замените теги на реальные значения. Вручную отправьте запрос SOAP и проанализируйте ответ таким же образом, используя исходный шаблон.

Ответ 2

Импортер Delphi WSDL и набор инструментов веб-службы Free Pascal не предоставляют способ динамического создания SOAP-запроса на основе WSDL.

Инструмент Web Service Toolkit (и импортер WSDL) - это только генераторы исходного кода, поэтому сначала необходимо скомпилировать код - это требует включения компилятора с вашим приложением.