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

相关文章

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

详解Java如何向http/https接口发出请求

《详解Java如何向http/https接口发出请求》这篇文章主要为大家详细介绍了Java如何实现向http/https接口发出请求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用Java发送web请求所用到的包都在java.net下,在具体使用时可以用如下代码,你可以把它封装成一

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Idea调用WebService的关键步骤和注意事项

《Idea调用WebService的关键步骤和注意事项》:本文主要介绍如何在Idea中调用WebService,包括理解WebService的基本概念、获取WSDL文件、阅读和理解WSDL文件、选... 目录前言一、理解WebService的基本概念二、获取WSDL文件三、阅读和理解WSDL文件四、选择对接

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram