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

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri