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


151

Delphi曾经包括用于Web服务的demos文件夹,但似乎不再包括它。

我只是尝试了Delphi 7演示项目(SOAPDMServerWAD一个完全没有UI的服务器,并且SOAPDMClient),但即使在Delphi 7中也无法使其正常运行。

如果有人曾经在Delphi XE或Delphi 2010中进行过类似的演示工作SOAPDMServerWAD+SoapDMClient,而与在Delphi XE中进行工作的旧演示相同,并且至少具有来自Delphi SOAP Server应用程序向导的最小UI,那将是完美的。

更新:该演示在Delphi 2010之前一直出现,但是使用了已经过时的WAD(web-app-debugger),我试图将其移植到新的Indy上runtime/web-app-development-harnessing-code,但是我似乎无法使其正常工作。该演示已运行,但该服务器没有用户界面,并且似乎没有运行任何HTTP服务器(已通过http://localhost:port/url 使用常规Web浏览器进行了测试。顺便说一下,尝试谷歌搜索一个演示,此URL出现,并且我不到一个小时前问,谷歌,这真是吓人。

Update2请参阅下面的我自己的答案,有关工作代码的链接即将发布。


3
[offtopic]几个月前,我不得不在Delphi中创建一个非常简单的SOAP客户端,事实证明这是相当令人头疼的事情,并且浪费了生产力,我建议同时寻找替代方法。
ComputerSaysNo

13
@Dorin-使用WSDL导入器很容易创建SOAP客户端。
罗伯特·洛夫·洛夫

8
@Robert并不是让您头疼的那部分,而是文档和缺少演示等等。对于我来说,对于一个简单的客户端,我不得不学习太多关于SOAP的知识,而根据我的理解,这并没有为我提供太多帮助Java很简单,但是还没有尝试过=>我是一个delphi顽固的用户。
ComputerSaysNo

5
最简单的肥皂是.net wcf
11年

5
edn.embarcadero.com/article/40973上有一个教程视频。有关系吗?
亚历克斯(Alex)

Answers:


39

我已经在CodeCentral上将项目完整的SOAP演示集发布为28789

它们包含该WebServices文件夹中的每个Delphi 2007时代SOAP演示,现已针对Delphi XE和XE2更新,包括将旧的WAD服务器转换为新的INDY VCL服务器。您会认为这令人印象深刻,但事实并非如此。真的很简单。只需使用向导创建一个新项目,然后将Web服务接口和实现单元以及旧演示中的任何其他单元添加到该项目中。一旦将它们添加到项目中,它们就可以工作。 基本演示SOAP Servers确实很容易在Delphi中构建,一旦有了有效的演示,您将发现修改和扩展它非常容易。

最能回答我上面问题的演示在SOAPDataModule子文件夹中。

从2007年时代开始的演示的基本问题有两个:

  1. WAD(Web应用程序调试器)不见了。您必须使用Indy服务器来制作新服务器,以实现最佳演示目的,从而避免在IIS下使用WAD(已不可用)或设置ISAPI环境,而这对于演示目的而言并不理想。我制作的新演示项目称为SoapDMServerINDY,它由一个数据模块(datamod_u.pas),一个VCL表单用户界面单元(IndyServerVCLFormUnit.pas)和一个Indy Server Web模块(称为)组成IndyServerWebModule.pas

  2. Delphi 2007演示由于采用了Debug / Win32子文件夹的新实践而中断,该演示可执行文件现在位于该子文件夹中,您需要进一步进行开发。我已修复了演示服务器,以便在找不到数据文件时向您发出错误消息警告您,从而避免了神秘的“ XML解析错误”。我还在一些演示中添加了一些错误检查,以便告诉您需要安装interbase才能运行此演示,因为某些演示需要安装并运行Interbase,而一个演示则需要一个名为IBLOCAL的别名,并且最好是一个称为EMPLOYEE存在的表。

在此处输入图片说明

该演示的元素是服务器(SoapDMServerINDY,基于SOAPDMServerWAD的代码),客户端SOAPDMClient连接到演示并有两个页面,一个页面将显示通过DBGrid +数据集远程处理的基本数据访问,第二个页面将显示本页显示了如何调用自定义SOAP方法。

要使用该演示,请执行以下操作:您必须启动服务器,单击“开始”按钮,然后启动客户端,然后单击“连接”。

在此处输入图片说明


1
努力!如果您不能发布固定的演示,也许差异/补丁会做?
克里斯·桑顿

8
这是开源社区的古老原则。抓紧自己的脚步,分享成果,并希望它不仅会使所有人受益,而且随着时间的推移,建立一个可以共同完成我们无法独自完成的事情的社区。因此,如果发现问题,请向我发送错误报告。
沃伦·P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.