在Delphi中动态使用WSDL

11

如何使用程序配置文件中提供的动态WSDL、操作和参数?

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

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

也就是说,我们必须使用在运行时通过ini文件传递的未知的Web服务。因此,我们无法在Delphi中使用WSDL导入向导。

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


1
使用静态类型的好处是,您可以在编译时获得类型安全和 IDE 中的代码完成。在您的代码中,您永远不需要知道数据是如何传输的,甚至不需要知道 XML 是什么,因为一切都被整齐地映射到 Delphi 结构中。那么,您有特定的原因要使用动态类型吗? - Wouter van Nifterick
1
如果你真的需要这样做,那么 Delphi 不是完成此任务的正确工具,使用像 Java 或 .NET 这样的 JIT 语言会更容易实现你的目标。 - whosrdaddy
2
这是一个符合您需求的C#示例:http://codemine.net/post/A-Generic-and-Dynamic-way-to-invoke-remote-WCFWebservice-Web-Method#.UicToz_O5H8 - whosrdaddy
1
从Delphi中绕道并调用Java或.Net应用程序 ;) - mjn
1
您可以始终自己构建SOAP请求,而无需使用HTTPRIO。这正是评论中C#示例中发生的情况。您可以在Delphi中完全做到同样的事情。 - whosrdaddy
显示剩余4条评论
2个回答

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

你有任何样例或者什么东西吗? - mesutuk

0

Delphi的WSDL导入器和Free Pascal Web Service Toolkit没有提供一种基于WSDL动态构建SOAP请求的方法。

Web Service Toolkit(以及WSDL导入器)只是源代码生成器,因此代码首先需要编译 - 这需要在应用程序中包含编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接