Web services 在Delphi中动态使用WSDL

Web services 在Delphi中动态使用WSDL,web-services,delphi,soap,wsdl,Web Services,Delphi,Soap,Wsdl,如何使用程序配置文件中给出的动态WSDL、其操作和参数 例如,我们有一个配置文件: [Section] WSDL=http://example.com/SomePub/ws/SomeService?wsdl Username=myuser Password=mypass OperationName=MyOperation ParameterName=MyParameter 也就是说,我们必须使用web服务,这是未知的,但(通过ini文件)仅在运行时提供。因此,我们不能在Delphi中使用WSD

如何使用程序配置文件中给出的动态WSDL、其操作和参数

例如,我们有一个配置文件:

[Section]
WSDL=http://example.com/SomePub/ws/SomeService?wsdl
Username=myuser
Password=mypass
OperationName=MyOperation
ParameterName=MyParameter
也就是说,我们必须使用web服务,这是未知的,但(通过ini文件)仅在运行时提供。因此,我们不能在Delphi中使用WSDL导入向导


我们能否在Delphi中编写这样一个程序,从配置中加载这些设置,然后将数据传递给web服务上指定参数中的指定操作,该参数由给定的WSDL指定

使用SOAPUI,导入服务并执行示例调用。将原始请求和原始响应复制到记事本中。使用“标记”修改真实数据,并将每个原始模板作为值包含在INI中。当您需要进行调用时,打开INI,获取原始响应模板并用实际值替换标记。手动发送SOAP请求并使用原始模板以相同的方式解析响应。

Delphi WSDL导入器和免费的Pascal Web Service Toolkit不提供基于WSDL动态构建SOAP请求的方法


Web服务工具包(和WSDL导入器)只是源代码生成器,因此首先需要编译代码-这需要在应用程序中包含一个编译器。

静态使用它的好处是,您可以在ide中获得编译时类型安全和代码完成。在您的代码中,您永远不需要知道数据是如何传输的,甚至不需要知道xml是什么,因为所有内容都被巧妙地映射到delphi结构。那么,您是否有具体的理由动态使用它呢?如果您确实需要这样做,那么delphi并不是适合这项工作的工具,使用Java或.NET等JIT语言将更容易实现您的目标。下面是一个C#示例,说明您想要什么:绕道从delphi调用Java或.NET应用程序;)您始终可以自己构造SOAP请求,而无需使用HTTPIO。这正是评论中C#示例中发生的情况。您可以从delphi执行完全相同的操作。