Delphi XE的SOAP服务器和客户端应用程序VCL+indy演示?

153

Delphi以前会包括一个Web服务演示文件夹,但现在似乎不再包括。

我刚试了Delphi 7的演示项目(SOAPDMServerWAD, 几乎没有UI的服务器, 和 SOAPDMClient),甚至在Delphi 7中也无法使其正常工作。

如果有人在Delphi XE或Delphi 2010中使类似的演示代码(SOAPDMServerWAD+SoapDMClient)工作并且至少具有来自Delphi SOAP Server应用程序向导的最小UI,那就太好了。

更新: 这个演示可以一直使用到Delphi 2010,但采用了现在过时的WAD(Web-app-debugger),我尝试将其移植到新的Indy runtime/web-app-development-harnessing-code,但似乎无法使其工作。演示正在运行,但服务器没有用户界面,也不会运行任何HTTP服务器(通过常规Web浏览器测试,通过http://localhost:port/ URL进行测试)。顺便说一下,试试谷歌搜索演示,这个URL就会出现,而我刚刚问了不到一个小时。谷歌太可怕了。

更新2:请看下面我的答案,一个带有工作代码的链接即将推出。


3
[offtopic] 几个月前我不得不在 Delphi 中创建一个相当简单的 SOAP 客户端,结果证明这是一件非常头痛和低效的事情,我建议在此期间寻找替代方案。 - user497849
13
使用WSDL导入工具很容易创建一个SOAP客户端。 - Robert Love
8
@Robert,让我感到困扰的不是代码的那一部分,而是文档和缺乏演示等方面。为了使用简单的客户端,我不得不学习太多关于SOAP的知识,但并没有太多的帮助。据我了解,在Java中做这个要容易得多,但我还没有尝试过,因为我是Delphi的忠实用户。 - user497849
5
最简单的SOAP是.NET WCF。 - hidden
5
这里有一个教程视频,位于http://edn.embarcadero.com/article/40973。与相关吗? - Alex
显示剩余7条评论
1个回答

42

我已经在CodeCentral上发布了完整的SOAP演示文件.

这些演示文件包含了Delphi 2007时代的WebServices文件夹中所有的SOAP演示,现已更新为适用于Delphi XE和XE2,并将旧的WAD服务器转换为新的INDY VCL服务器。虽然这听起来很厉害,但实际上非常容易。只需使用向导创建一个新项目,然后将Web服务接口、实现单元和任何其他属于旧演示的单元添加到项目中。一旦它们被添加到项目中,它们就可以正常工作。在Delphi中构建基本的SOAP服务器非常容易,一旦您有一个可工作的演示,您会发现修改和扩展它非常容易。

最能回答我上面提出问题的演示位于SOAPDataModule子文件夹中。

该2007年版演示的基本问题有两个:

  1. WAD(Web应用程序调试器)已经消失了。您必须使用Indy服务器创建一个新服务器,以达到最佳的演示效果,这样就不用使用WAD(已经不存在了)或者在IIS下设置ISAPI环境,这对于演示目的来说并不理想。我创建的新演示项目称为SoapDMServerINDY,它包括一个数据模块(datamod_u.pas)、一个VCL表单用户界面单元(IndyServerVCLFormUnit.pas)和一个名为IndyServerWebModule.pas的Indy Server Web模块。

  2. 由于新的Debug/Win32子文件夹被用作演示可执行文件所在位置,Delphi 2007演示程序出现了错误,您需要往上层找到正确位置。我修复了演示服务器,如果无法找到数据文件,它会通过错误消息警告您,避免出现神秘的“XML解析错误”。我还在一些演示中添加了一些错误检查,让您知道必须安装Interbase才能使这个演示工作,因为其中一些演示需要已安装并运行Interbase,而另一个演示需要一个名为IBLOCAL的别名存在,并且最好存在一个名为EMPLOYEE的表。

图片描述

此演示包括一个服务器(SoapDMServerINDY,基于SOAPDMServerWAD代码)和客户端SOAPDMClient,后者连接到演示程序,具有两个页面,一个页面将显示通过DBGrid +数据集远程访问的基本数据,第二个页面显示如何调用自定义SOAP方法。

使用演示程序:您必须启动服务器,单击启动按钮,然后启动客户端并单击连接。

图片描述


1
非常感谢你的努力!如果您无法发布修复后的演示文稿,也许一个差异/补丁会有所帮助? - Chris Thornton
8
这是开源社区的一个古老原则:“解决你自己的问题,分享你的成果,希望这不仅有助于每个人,还能随着时间的推移建立一个可以共同完成我们无法独自完成的事情的社区。”所以,如果您发现问题,请务必向我发送错误报告。 - Warren P

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