delphi D10.X 生成WebService接口介绍

2023-10-08 14:59

本文主要是介绍delphi D10.X 生成WebService接口介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。他是基于http的soap协议传输数据 webservice=soap=http+xml,webservice协议就是有http+xml组成的,其中xml中会用到wsdl,而wsdl是描述语言xml中的一种格式。

WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。

这是一种很早就出现的数据交互技术,现在的系统中很少再使用到,在用的多数是原有系统沿用下来的。

当年使用D7的时候,就做过WebService接口,现在遇到这样接口的系统真的不多,但确实也还是有的,所以把Delphi下D10.X生成接口代码的方法定下来。

使用向导

Delphi在生成WebService接口上非常的方便,所有工作都由系统帮助处理完成。在IDE上,根据以下选择菜单会启动导入WSDL向导:

启动向导

方式一:

Component --> Import WSDL
在这里插入图片描述

方式二:

File --> New --> Other --> Delphi Projects --> Web --> WSDL Importer
在这里插入图片描述

注意:从文件>新建>其他 启用的WSDL导入向导程序需要先创建一个应用程序,然后才能激活该命令,但是从组件菜单调用的WSDL导入向导程序允许您在创建应用程序之前运行向导。

使用此向导可以导入描述Web Service的WSDL文档或XML模式。导入WSDL文档或XML模式后,向导将生成使用远程接口对象(THTTPRIO)在这些Web服务上调用所需的所有接口和类定义。您还可以告诉向导生成可完成创建Web Service应用程序所需的框架代码(例如,如果要实现WSDL文档中已定义的Web Service)。

WSDL设置页面

这是启动向导的第一个页面。
在这里指定要导入的WSDL文档的URL(或选择一个已存储的URL),并填写用于访问文档的凭据(用户名,密码和代理)。
在这里插入图片描述

项目说明
Location of WSDL File or URL输入WSDL文件名或发布文档的URL。单击编辑框旁边的省略号按钮以浏览文件位置。输入文件名后,您可以单击“ Next”按钮转到“ SOAP版本”页面。
User Name如果WSDL文档在需要身份验证的安全服务器上,请指定要使用的用户名。
Password指定当WSDL文档位于需要身份验证的安全服务器上时与用户名一起使用的密码。
Proxy为必须将请求转发到“ Web服务导入”对话框的“源”页面上指定的URL的所有代理服务器指定主机名。

通常情况下后面三项不需要填写,第一项通常会以“?wsdl”结束。

SOAP版本设置页面

在这个设置项页面,允许您指定WSDL文档使用的SOAP版本(1.1或1.2),或选择可用的最新版本。请注意,服务可以同时支持1.1和1.2。为了避免版本不匹配(可能导致生成错误的源代码),通常应选择“ 自动SOAP版本控制(Automatic SOAP versioning)”选项。
在这里插入图片描述
您可以选择以下选项之一:

项目说明
Automatic SOAP versioning允许您根据要支持的SOAP版本选择要导入的WSDL中描述的SOAP服务。如果同时允许使用1.1和1.2版本,则该自动生成支持SOAP 1.2。
Process only WSDL Binding extensions for the SOAP 1.1 Protocol该选项仅使用SOAP 1.1协议与服务进行通信。
Process only WSDL Binding extensions for the SOAP 1.2 Protocol该选项仅使用SOAP 1.2协议与服务进行通信。

说明:假设WSDL描述了每个已定义服务支持的SOAP版本:

  • CreditCardIssueService SOAP 1.1

  • CreditCardVerifyService SOAP 1.1、1.2

  • CreditCardRevokeService SOAP 1.2
    如果在“ SOAP版本”页面上选择“ 自动SOAP版本控制 ”,则将导入以下服务:

  • CreditCardIssueService SOAP 1.1

  • CreditCardVerifyService SOAP 1.2

  • CreditCardRevokeService SOAP 1.2
    即,没有导入CreditCardVerifyService的SOAP 1.1版本。

如果选择“ 仅使用SOAP 1.1协议”,那么将导入以下服务:

  • CreditCardIssueService SOAP 1.1
  • CreditCardVerifyService SOAP 1.1
    也就是说,省略了CreditCardRevokeService,因为它仅支持SOAP 1.2。

如果选择“仅使用SOAP 1.2协议”,那么将导入以下服务:

  • CreditCardVerifyService SOAP 1.2
  • CreditCardRevokeService SOAP 1.2
    也就是说,省略了CreditCardIssueService,因为它仅支持1.1。

选择好协议版本后,单击“ 下一步”转到“ WSDL导入选项”页面。

WSDL导入选项页面

使用此向导页面来配置向导生成代码以表示WSDL文档中定义的方式。
在这里插入图片描述
选择下面描述的任何选项。通常应使用默认选项,因为默认选项提供了导入WSDL文档的最安全方法。

项目说明
Generate verbose information about types and interfaces如果启用此选项,则WSDL导入器将生成有关类型名称空间,服务样式,绑定名称以及其他各种WSDL公开数据的信息。
One out parameter is return value选中后,导入程序会将具有单个输出消息的操作映射到以输出消息为返回值的函数中。如果未选中此选项,则将输出消息映射到输出参数。
Generate server implementation instead of client implementation选中后,导入程序将为导入的接口生成实现类。在编写实现已在WSDL文档中定义的Web Service的服务器时,请使用此选项。
Unwind Literal Params在文档文字编码中,Web服务未描述操作。相反,它描述了两个记录,一个记录提供了预期的输入,一个记录了输出。选中“展开文字参数”后,导入程序会将这两个记录转换为方法调用。
Emit Literal Types在文档文字编码中,Web服务未描述操作。相反,它描述了两个记录,一个记录提供了预期的输入,一个记录了输出。如果选中了“生成文字类型”,则导入器将为这两个记录生成类型定义,即使将它们转换为方法调用(即,即使选中了“展开文字参数”也是如此)。
Map String to WideString选中后,导入程序会将所有字符串类型映射到WideString值。取消选中时,导入程序将改用字符串类型。可能需要WideString值来处理使用扩展字符的值。如果字符串值不使用扩展字符,则使用字符串类型会更有效。
Generate destructors for remotable types选中后,导入程序将在代表类型的类上生成析构函数。这些析构函数释放类型为类或类数组的所有嵌套成员。生成的析构函数简化了释放表示类型的类的实例时必须执行的工作,因为您无需显式释放也使用类表示可远程化类型的类成员。
Generate warning comments选中后,导入程序会将警告消息添加到其放在生成文件顶部的注释中。这些警告描述了一些问题,例如,在检查了“忽略架构错误”时WSDL文档中的无效类型定义,在检查了“展开文字参数”时展开文字参数时遇到的问题,等等。
Map pure collections to wrapper class types选中此选项以使WSDL导入器能够将导入的数组类型映射到包装器类。此选项主要提供给C ++ Builder,在C ++ Builder中,数组类型不能直接映射到WSDL数组类型,因此需要包装器收集类。
Do not emit unused types如果选中此选项,则WSDL导入器不会为WSDL文档中声明的类型生成代码,但不会在任何公开的Service中使用。请注意,类可能不遵循此规则,因为Service可能会返回派生类的实例,在该实例中应具有基类。在这种情况下,将生成基类和派生类的代码。
Validate Enumeration members选中此选项以确保WSDL导入器在生成枚举成员时使用全局符号列表。此选项可防止在WSDL文档中声明的枚举类型的枚举成员之间发生名称冲突。从Delphi 2009开始,我们建议您不要取消选中此选项。
Import Fault Types选中此选项可将WSDL导入器进程类型标记为Fault。
Import Header Types检查以使WSDL导入器能够处理标记为标题的类型。
Generate interface GUIDs using COM API选中此项以使WSDL导入器能够在每次导入服务时分配唯一的GUID。如果禁用此选项,则每次WSDL导入程序为该服务生成代码时,为每个服务生成的GUID都将保持不变。在大多数情况下,建议禁用此选项。
Process included and imported schemas选中此选项以使WSDL导入器过程包含和导入模式。
Generate class aliases as class types选中此选项以使WSDL导入器生成类类型而不是弱别名。此选项可确保生成的别名类与基本类型具有不同的RTTI(运行时类型信息)。
Allow out parameters此选项控制是否将WSDL进口商生成使用方法进行返回SOAP消息的多个部分时的参数。如果禁用此选项,则不会生成out参数。WSDL导入器为多部分SOAP消息生成包装器类。
Use Setters and Getters for properties默认情况下,WSDL导入器会生成直接映射到所生成类中的字段的属性。通过启用此选项,您可以强制WSDL导入器改为生成setter和getter方法。
Process nillable and optional elements选中此选项以使WSDL导入器生成有关可选属性和可设置属性的相关信息。SOAP运行时使用此信息来允许某些属性为零。
Use TXSString for simple nillable typesWSDL标准允许在C ++中用Delphi或NULL将简单类型设为nil,而Delphi和C ++则不允许。选中此选项,以使WSDL导入程序通过使用包装类的实例来克服此限制。
Generate scoped enumerations选中后,将生成作用域枚举。如果WSDL文档包含定义相同名称的值的不同枚举,请选中此选项。

最后,在“ WSDL导入选项”页面上单击完成,以继续进行源代码生成。


欢迎光顾本人小店:(https://shop63778938.taobao.com/)
小店也提供delphi方面其他技术支持、定制开发。

现在就进店看看

大家有什么不清楚的,可以给我留言讨论
以上信息对您有用的话请点赞收藏,就下面这行

这篇关于delphi D10.X 生成WebService接口介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/166103

相关文章

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

SpringBoot集成WebService(wsdl)实践

《SpringBoot集成WebService(wsdl)实践》文章介绍了SpringBoot项目中通过缓存IWebService接口实现类的泛型入参类型,减少反射调用提升性能的实现方案,包含依赖配置... 目录pom.XML创建入口ApplicationContextUtils.JavaJacksonUt

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W