本文主要是介绍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 types | WSDL标准允许在C ++中用Delphi或NULL将简单类型设为nil,而Delphi和C ++则不允许。选中此选项,以使WSDL导入程序通过使用包装类的实例来克服此限制。 |
Generate scoped enumerations | 选中后,将生成作用域枚举。如果WSDL文档包含定义相同名称的值的不同枚举,请选中此选项。 |
最后,在“ WSDL导入选项”页面上单击完成,以继续进行源代码生成。
欢迎光顾本人小店:(https://shop63778938.taobao.com/)
小店也提供delphi方面其他技术支持、定制开发。
现在就进店看看
大家有什么不清楚的,可以给我留言或讨论。
以上信息对您有用的话请点赞收藏,就下面这行
这篇关于delphi D10.X 生成WebService接口介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!