升级delphi soap运行时库及wsdl导入模块。鉴于delphi 7自带的wsdlimp.exe工具在解析wcf服务wsdl时存在兼容性问题,无法准确生成可用的代理类,codegear官方已推出补丁更新包,并开放免费下载。具体安装流程为:先对原始文件进行备份,再解压新版组件包,将其中的文件覆盖至delphi安装目录下对应子路径中,最后重启delphi集成开发环境即可生效。
1、 对目标WCF服务进行Web配置调整,启用标准HTTP绑定模式,确保其对外暴露的WebService接口符合SOAP 1.1规范,从而兼容Delphi客户端调用。
2、 在当前Visual Studio解决方案中新建一个ASP.NET网站项目,右键点击该项目即可展开上下文操作菜单。

3、 使用更新后的WSDLImp工具执行WSDL解析,生成Delphi可识别的接口单元文件。
4、 在Windows命令提示符中执行如下指令:WSDLImp http://192.168../Service.svc?wsdl,该命令将自动获取并转换远程WSDL描述为本地Pascal接口定义。

5、 执行完毕后,工具将在当前目录生成名为Service.pas的单元文件,其结构与内容如图所示。

6、 将生成的Service.pas加入Delphi工程,并在测试窗体中按图示布局添加必要的VCL控件(如TButton、TEdit等)。

7、 点击“计算”按钮触发事件处理过程,此时程序将通过SOAP协议调用部署于VS2010中的WCF服务端点,核心调用逻辑参见下图代码段。

8、 在导入WSDL定义时,请避免使用Delphi 7内置的WebService向导功能,因其底层实现存在缺陷,所生成的代理代码易出现序列化异常或方法签名错误,强烈建议采用命令行WSDLImp工具手动导入以保障稳定性与准确性。












