Динамически использовать 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) - это только генераторы исходного кода, поэтому сначала необходимо скомпилировать код - это требует включения компилятора с вашим приложением.