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

Posted

技术标签:

【中文标题】Delphi XE 的 SOAP 服务器和客户端应用程序 VCL+indy 演示?【英文标题】:SOAP server and client application VCL+indy demo for Delphi XE? 【发布时间】:2011-09-18 21:58:57 【问题描述】:

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 服务器(使用常规 Web 浏览器测试,通过 http://localhost:port/ urls。顺便说一句,尝试谷歌搜索演示,这个 url 来了起来,不到一小时前我就问过了。这太可怕了,谷歌。

Update2在下面查看我自己的答案,很快就会有一个链接与工作代码。

【问题讨论】:

[offtopic] 几个月前,我不得不在 Delphi 中创建一个非常简单的 SOAP 客户端,结果证明是相当令人头疼和浪费生产力,我建议同时寻找替代方案。 @Dorin - 使用 WSDL 导入器非常容易创建 SOAP 客户端。 @Robert 这不是让我头疼的部分,而是文档和缺乏演示等。对于一个简单的客户端,我不得不学习太多关于 SOAP 的知识,这对我没有太大帮助,据我了解,Java 更容易,但没有尝试过 => 我是 delphi 的死忠用户。 最简单的肥皂是 .net wcf edn.embarcadero.com/article/40973 有教程视频。相关? 【参考方案1】:

我已经在CodeCentral as item 28789 上发布了完整的 SOAP 演示集。

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

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

从 2007 年开始,demo 的基本问题有两个:

    WAD(Web 应用调试器)已消失。您必须使用 Indy 服务器创建一个新服务器,以实现最佳演示目的,使您免于使用 WAD(已消失)或在 IIS 下设置 ISAPI 环境,这对于演示目的而言并不理想。我制作的新演示项目名为SoapDMServerINDY,它由一个数据模块(datamod_u.pas)、一个VCL表单用户界面单元(IndyServerVCLFormUnit.pas)和一个名为@的Indy Server web模块组成。 987654327@.

    Delphi 2007 演示失败,这要归功于演示可执行文件现在所在的 Debug/Win32 子文件夹的新做法,您需要更进一步。我修复了演示服务器,以便在无法找到数据文件时向您发出错误消息警告,从而使您免于神秘的“XML 解析错误”。我还在一些演示中添加了一些错误检查,以便它告诉您需要安装 interbase 才能使此演示正常工作,因为 一些 演示需要安装并运行 Interbase,其中一个需要存在一个名为 IBLOCAL 的别名,最好是一个名为 EMPLOYEE 的表。

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

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

【讨论】:

辛苦了!如果你不能发布固定的演示,也许 diff/patch 可以吗? 这是开源社区的老原则;抓紧自己的痒,然后分享结果,希望它不仅能让每个人受益,而且随着时间的推移建立一个社区,可以一起做我们无法单独做的事情。因此,如果您发现问题,请向我发送错误报告。

以上是关于Delphi XE 的 SOAP 服务器和客户端应用程序 VCL+indy 演示?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 7 SOAP 身份验证和会话 ID 如何

delphi XE8 TDSServer服务端怎样接收客户端消息

Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!

如何用 Delphi Win32 编写 SOAP 1.2 客户端的最佳方式

如何在 Delphi SOAP Web 服务客户端中使用 NTLM 身份验证?

如何使用 Delphi XE 发送 WCF 的 ClientCredentials