DELPHI通过WebService进行数据交互

news2025/1/12 1:34:19

WebService是一种可以跨语言和平台的数据交互模式,使用非常广泛,与JSon数据格式结合,更是当前非常流行的一种模式,本章针对DELPHI通过WebService进行数据的交互做一个相对简单例子应用。

本文使用的DELPHI 版本为:DELPHI 11

阅读目录:
1.建立WebService服务端
2.建立WebService客户端

【WebService服务端】
这一节的内容如下:
1.1 如何创建WebService服务端
1.2 创建一个客户端获取文本的调用接口
1.3 创建一个客户端存储数据的调用接口
其它说明:数据存储我们采用JSon的方式进行交互

下面进入服务端创建的正题:
1.1 如何创建WebService服务端
首先我们打开DELPHI,然后新建一个WebService服务端工程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里使用VCL或FMX都可以,我最近迷上了FMX,还是用FMX吧
在这里插入图片描述
端口可以自由设置,不过设置以后最好点一下测试,万一端口没打开呢,标准是8080,但我建议换一个
在这里插入图片描述
创建完成后,在弹出的对话框中选择“YES”,然后输入Service的名称后点OK,软件会自动创建单元文件
在这里插入图片描述

在这里插入图片描述
到当前为止,我们的服务端就创建好了,不过是个空的服务端,什么接口都没有,但我们可以运行一下看看
在这里插入图片描述
在上面的界面中,点击Star运行服务,然后我们可以点击按钮“Open Browser”,看看成功了没?
在这里插入图片描述
结果:成功了,只是没有被调用的接口,但服务已建立,下面开始创建接口函数

1.2 创建接口函数

在这里我决定创建两个函数,一个输出文本给客户端调用,另一个接口用来给客户端存储数据,数据交互的方式为JSon

我们给第一个函数命名为:GetTestWord,用来给客户端调用显示文本。
我们给第二个函数命名为:SaveDataInf,用来给客户端保存数据

下面先解决第一个函数
第一步:我们在MyServerIntf单元创建函数名称,注意函数后面的stdcall不可缺少
在这里插入图片描述
第二步:在MyServerImpl单元中,实现函数的功能,这里注意声明的地方,要放在Public里面
在这里插入图片描述
然后我们运行服务端,并Star,然后点击 Open Browser,可以发现我们创建的函数已存在
在这里插入图片描述

在这里插入图片描述
好了,我们第一个函数创建完成,为了避免麻烦,我们把第二个函数也一起完成后,再来建立客户端

我们转到WebModuleUnit模块,在这里放上连接数据库的相关控件,大概如下:
至于数据库如何连接,我这里不做说明,我相信这个大家基本都懂
在这里插入图片描述
因为要存储数据,所以有些前提条件必须要做好说明
本案例一些相关的前提条件如下:
数据库类型:MSSQL
数据表名称:UserInf
数据表字段:UserN,PWD,GroupName,NickName四个字段
数据交互格式:JSon(内容也是按字段进行),这里有个非常重要的地方,JSon格式与内容必须服务端与客户端要统一,否则就要出错。

好了,前提条件说完了,我们先创建一个数据保存的内部函数先,此函数建立在WebModuleUnit单元中
注意,因为是使用JSon,所以我们要引用system.JSON单元,大体如下:

在这里插入图片描述

在这里插入图片描述
上面创建的函数只是内部函数,还不能被客户端调用,所以我们接下来还要做两个动作,这跟我们创建第一个函数的方法一样
我们转到MyserverIntf单元中,创建一个新的函数名称,我们这里暂定为:SaveDataInf
在这里插入图片描述

接下来在MyServerImpl单元中,编写此函数的对外功能,用来给客户端调用保存数据

首先在此单元先引用WebModuleUnit单元
在这里插入图片描述

这一个动作为了使新手朋友们能看懂,我大概做个简单说明:
1.此函数传入的参数“str”主是客户端调用时传入的JSon文本
2.保存数据的功能因为在WebModuleUnit单元中已创建,所以这里引用就可以了

好了,到当前为止,我们服务端正式完成,F9运行并Star服务,不要关闭,我们开始设计客户端

【WebService客户端】

首先,我们新建一个工程,VCL或FMX都可以,看你喜欢,我是一如既往的FMX。
然后界面大概设计成下面图片的样子
在这里插入图片描述
接下来,导入WSDL
在这里插入图片描述
在这里插入图片描述
在这里输入服务端调用的地址。

什么?不知道地址哪里可以找到?

答案:可以在服务端看到复制就可以了,点击服务端的Open Browser,里面可以看到地址,如下图
在这里插入图片描述
在这里插入图片描述
当然,如果您的服务端是放在远程电脑上,那么Localhost就必须改成远程电脑的IP或域名

我们接着操作下一步,下面基本不需要操作什么,一路下一步完成即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存单元后,我们就可以在客户端操作了

首先,我们尝试调用服务端建立的第一个函数:GetTestWord
我们把这个函数的调用功能给下面图片的按钮,并且代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们来测试一下,看看是否成功
在这里插入图片描述
OK,第一个函数调用成功

接着我们调用第二个函数来保存数据
我们建立了四个Edit来分别输入数据表四个字段的内容,但我们在保存前,需要将四个字段内容转换成JSon文本并输入到Memo中,具体操作如下:
在这里插入图片描述

procedure TForm2.Button2Click(Sender: TObject);
var
   MyJson:TJSONObject;
   MyResult:Boolean;
begin
  try
   MyJson:=TJSONObject.Create;
   MyJson.AddPair('UserN',Edit1.Text);
   MyJson.AddPair('PWD',Edit2.Text);
   MyJson.AddPair('GroupName',Edit3.Text);
   MyJson.AddPair('NickName',Edit4.Text);
   Memo1.Text:=MyJson.ToString;
  finally
    MyJson.Free;
  end;
end;

按上面的代码,我们将四个EDIT内容转换成了JSon文本,然后我们就可以把JSon文本通过WebService传递给服务端进行数据保存
在这里插入图片描述

procedure TForm2.Button4Click(Sender: TObject);
var
   Str:string;
begin
   str:=MyWeb.SaveDataInf(Memo1.Text);
   ShowMessage(Str);
end;

然后我们看看数据保存成功了没有?
在这里插入图片描述
数据保存成功,这里显示两条,是因为我点了两次保存

好了,WebService的数据交互基本就实现的差不多了,接下来还有最最重要的一个环节

【标准得瑟环节】

本文介绍的够不够详细,如果对您有用,请叫我雷锋。

还是那句经典名言:能给新人看懂的教程才是好教程

得瑟结束,文章内容结束,但分享远没有结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1686472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础之程序地址空间

目录 一、程序地址空间的基本概念 二、程序地址空间的结构​编辑 三、虚拟地址和物理地址的关系 四、为什么要使用程序地址空间 一、程序地址空间的基本概念 要理解我们的程序地址空间,首先就要认识下面这张图: 这张图上所表示的内容&#xf…

java中写word换行符 poi 换行

省流: 表格外的文本,使用“\r”或者“(char)11”来换行,建议用"\r"。 表格内的文本,使用“(char)11”来换行。 正文: 测试用word文档: t1.doc内容如下: t2.doc内容如下&#xff…

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

掌握2个手机数据恢复软件,快速恢复丢失的数据!

我们使用手机存储了大量的个人和重要数据,包括照片、视频、联系人、短信等等。然而,数据丢失的风险也随之增加。不小心删除、手机损坏、系统崩溃等问题都可能导致宝贵的数据消失。 幸运的是,现在有许多强大而高效的手机数据恢复软件可以帮助…

CSS transform 三大属性 rotate、scale、translate

transform 浏览器支持定义和用法translate位移函数rotate旋转函数scale缩放函数 浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号。 紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。 定义和用法 transform 属性向元素应用 2D…

2024电工杯B题保姆级分析完整思路+代码+数据教学

2024电工杯B题保姆级分析完整思路代码数据教学 B题题目:大学生平衡膳食食谱的优化设计及评价 接下来我们将按照题目总体分析-背景分析-各小问分析的形式来 总体分析: 题目要求对两份一日膳食食谱进行营养分析和调整,然后设计优化的平衡膳…

Python 造数据神器Faker

大家好,在编写代码过程中,我们经常需要一些假数据来进行测试或者演示。手动创建这些数据不仅耗时,而且容易出错。幸运的是,Python有一个非常有用的库叫做Faker,它可以生成各种类型的假数据,从名字、地址到公…

ios 原生项目迁移flutter第一天环境

由于公司已经有第一个吃螃蟹的项目组,我在迁移的时候想着站在巨人的肩膀上,但是搭配环境一定要问清楚对方flutter版本,路径也要安排好,不然就不行。 对着自己的项目照着葫芦画瓢,我刚开始为了配置管理图个方便随便放&…

基于Python实现 HR 分析(逻辑回归和基于树的机器学习)【500010104】

介绍 数据集说明 此数据集包含与员工有关的综合属性集合,从人口统计细节到与工作相关的因素。该分析的主要目的是预测员工流动率并辨别导致员工流失的潜在因素。 在这个数据集中,有14,999行,10列,以及这些变量:满意度…

GPU集合通信库在B站的应用和改进

1. 背景 上篇文章 万字长文解析:大模型需要怎样的硬件算力 深入探讨了大型语言模型(LLMs)在硬件资源方面的需求和面临的挑战,详尽地阐述了如何进行大模型的硬件选型,以及在实际工作中如何根据模型的特定需求来优化硬件…

安装petalinux工具

petalinux 并不是一个特殊 Linux 内核,而是一套开发环境配置的工具,降低 uboot、内核、 根文件系统的配置的工作量,可以从 Vivado 的导出硬件信息自动完成相关软件的配置。 petalinux 是赛灵思基于 buildroot 工具链为自家处理器方便适配 Li…

每周刷题第三期

个人主页:星纭-CSDN博客 系列文章专栏:Python 踏上取经路,比抵达灵山更重要!一起努力一起进步! 目录 题目一:环形链表 题目二:删除有序数组中的重复项 题目三:有效的括号 题…

spring-boot-starter-mail 发送带附件的邮件信息

背景 项目使用的事ruoyi低代码开发平台ruoyi中有常见的web端下载excel的方式,但是这种方式是直接把输出流写到一个response中,而不是给一个outputstream,如果是给一个outputstream的话,就可以写入到一个固定的文件中去了 解决思路…

P2. 配置MySQL和用户注册登录模块

P2. 配置MySQL和用户注册登录模块 0 概述Tips1 预备知识1.1 SpringBoot 常用模块1.2 pojo层的实现1.3 mapper层的实现1.4 controller层调试CRUD 2 Spring Security2.1 Spring Security 介绍2.2 Spring Security 对接数据库2.3 密码的加密 3 Jwt验证3.1 传统Session验证方式3.2 …

Langchain-Chatchat的markdownHeaderTextSplitter使用

文章目录 背景排查步骤官方issue排查测试正常对话测试官方默认知识库Debug排查vscode配置launch.json命令行自动启动condadebug知识库搜索测试更换ChineseRecursiveTextSplitter分词器 结论 关于markdownHeaderTextSplitter的探索标准的markdown测试集Langchain区分head1和head…

小白跟做江科大32单片机之学习准备

1.安装好51MDK之后,出现不能正常安装支持包的情况 在线安装支持包——>在keil5软件下点击这个,即可进入更新支持包界面 进去之后找这个 国产的可以找和这个 最后有这个就可以了

【人工智能项目】小车障碍物识别与模型训练(完整工程资料源码)

实物演示效果: 一、绪论: 1.1 设计背景 小车障碍物识别与模型训练的设计背景通常涉及以下几个方面: 随着自动驾驶技术的发展,小车(如无人驾驶汽车、机器人等)需要能够在复杂的环境中自主导航。障碍物识别是实现这一目标的关键技术之一,它允许小车检测并避开路上的障碍物…

JavaScript 动态网页实例 —— 表格处理

表格是网页设计中必不可少的内容之一。本章首先介绍HTML中普通表格的组成结构,然后,在此基础上,介绍如何使用JavaScript设置表格的属性。随后,更具体地介绍操作表格元素的一般方法,主要是对表格行、列的动态增删操作。有了这些基础,在本章的最后介绍对表元的操作,即如何…

C语言 | Leetcode C语言题解之第108题将有序数组转换为二叉搜索树

题目: 题解: struct TreeNode* helper(int* nums, int left, int right) {if (left > right) {return NULL;}// 选择任意一个中间位置数字作为根节点int mid (left right rand() % 2) / 2;struct TreeNode* root (struct TreeNode*)malloc(sizeo…

生产制造边角料核算说明及ODOO演示

今天群里有伙伴提到边角料的处理问题,我们梳理了一下,在生产过程中,如果产生了边角料,核算产成品的投料成本时需要考虑边角料的价值,以确保成本核算的准确性。以下是注意的几点: 一、边角料的入账价值 在生…