XE开发Linux应用(二)-Webservice
新建一个工程。选择如图。





继续输入服务名
然后就生成对应的单元。

增加linux 平台。

完善对应的单元代码
{ Invokable implementation File for Txaliontest which implements Ixaliontest }unit xaliontestImpl;interfaceuses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns, xaliontestIntf;type{ Txaliontest }Txaliontest = class(TInvokableClass, Ixaliontest)publicfunction echoname(const Value:string):string; stdcall;function sumall(const Value:integer):integer; stdcall;end;implementation{ Txaliontest }function Txaliontest.echoname(const Value: string): string;
beginresult:='你好'+value;
end;function Txaliontest.sumall(const Value: integer): integer;
vari:integer;isumall:integer;
beginisumall:=;for i := to value doisumall:=isumall+i;result:=isumall;
end;initialization
{ Invokable classes must be registered }InvRegistry.RegisterInvokableClass(Txaliontest);
end.{ Invokable interface Ixaliontest }unit xaliontestIntf;interfaceuses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns;type{ Invokable interfaces must derive from IInvokable }Ixaliontest = interface(IInvokable)['{20590E4A-BF8C-41AE-A630-94D2DD38EEE1}']{ Methods of Invokable interface must not use the default }{ calling convention; stdcall is recommended }function echoname(const Value:string):string; stdcall;function sumall(const Value:integer):integer; stdcall;end;implementationinitialization{ Invokable interfaces must be registered }InvRegistry.RegisterInterface(TypeInfo(Ixaliontest));end.编译本工程。出错了?

不要害怕,这是因为linux 上apache的引用没有加入。我们确认apache 已经在linux上安装成功。
那么我们在IDE 里面处理一下。

记住设以上的地方为True, 允许未定义的引用。
现在重新编译

OK 了
现在的任务就是在发布这个apache 模块。
这一块的内容请参照前面的文章。
配置文件如图:

启动apache.
在浏览器里面输入对应的地址,就可以显示webservice 的接口信息了。

好了,服务端搞定了。我们做一个客户端来调用一下这个服务。
直接建一个vcl application .

然后选择WDSL 导入器。

输入对应的地址。

系统会生成对应的接口文件
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL : http://192.168.1.66/xalionws/wsdl/Ixaliontest
// Encoding : utf-8
// Version : 1.0
// (2017-4-8 21:33:51 - - $Rev: 90173 $)
// ************************************************************************ //unit Ixaliontest1;interfaceuses Soap.InvokeRegistry, Soap.SOAPHTTPClient, System.Types, Soap.XSBuiltIns;type// ************************************************************************ //// The following types, referred to in the WSDL document are not being represented// in this file. They are either aliases[@] of other types represented or were referred// to but never[!] declared in the document. The types from the latter category// typically map to predefined/known XML or Embarcadero types; however, they could also// indicate incorrect WSDL documents that failed to declare or import a schema type.// ************************************************************************ //// !:int - "http://www.w3.org/2001/XMLSchema"[]// !:string - "http://www.w3.org/2001/XMLSchema"[]// ************************************************************************ //// Namespace : urn:xaliontestIntf-Ixaliontest// soapAction: urn:xaliontestIntf-Ixaliontest#%operationName%// transport : http://schemas.xmlsoap.org/soap/http// style : rpc// use : encoded// binding : Ixaliontestbinding// service : Ixaliontestservice// port : IxaliontestPort// URL : http://192.168.1.66/xalionws/soap/Ixaliontest// ************************************************************************ //Ixaliontest = interface(IInvokable)['{A3FB1A48-1AE7-B449-16DC-42CCE1A48832}']function echoname(const Value: string): string; stdcall;function sumall(const Value: Integer): Integer; stdcall;end;function GetIxaliontest(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): Ixaliontest;implementationuses System.SysUtils;function GetIxaliontest(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): Ixaliontest;
constdefWSDL = 'http://192.168.1.66/xalionws/wsdl/Ixaliontest';defURL = 'http://192.168.1.66/xalionws/soap/Ixaliontest';defSvc = 'Ixaliontestservice';defPrt = 'IxaliontestPort';
varRIO: THTTPRIO;
beginResult := nil;if (Addr = '') thenbeginif UseWSDL thenAddr := defWSDLelseAddr := defURL;end;if HTTPRIO = nil thenRIO := THTTPRIO.Create(nil)elseRIO := HTTPRIO;tryResult := (RIO as Ixaliontest);if UseWSDL thenbeginRIO.WSDLLocation := Addr;RIO.Service := defSvc;RIO.Port := defPrt;end elseRIO.URL := Addr;finallyif (Result = nil) and (HTTPRIO = nil) thenRIO.Free;end;
end;initialization{ Ixaliontest }InvRegistry.RegisterInterface(TypeInfo(Ixaliontest), 'urn:xaliontestIntf-Ixaliontest', 'utf-8');InvRegistry.RegisterDefaultSOAPAction(TypeInfo(Ixaliontest), 'urn:xaliontestIntf-Ixaliontest#%operationName%');end.在主窗体放两个按钮。

implementation{$R *.dfm}uses Ixaliontest1;procedure TForm2.Button1Click(Sender: TObject);
beginshowmessage( GetIxaliontest.echoname('xalion'));
end;procedure TForm2.Button2Click(Sender: TObject);
beginshowmessage( GetIxaliontest.sumall().tostring);
end;

相关文章:
XE开发Linux应用(二)-Webservice
新建一个工程。选择如图。继续输入服务名然后就生成对应的单元。增加linux 平台。完善对应的单元代码{ Invokable implementation File for Txaliontest which implements Ixaliontest }unit xaliontestImpl;interfaceuses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns…...
kubernetes实战与源码学习
1.1 关于Kubernetes的介绍与核心对象概念 关于Kubernetes的介绍与核心对象概念-阿里云开发者社区 k8s架构 核心对象 使用kubeadm10分钟部署k8集群 使用 KuboardSpray 安装kubernetes_v1.23.1 | Kuboard k8s-上部署第一个应用程序 Deployment基本概念 给应用添加service&a…...
CNCF x Alibaba云原生技术公开课 第八章 应用配置管理
Pod配置管理分类 可变配置就用 ConfigMap;敏感信息是用 Secret;身份认证是用 ServiceAccount;资源配置是用 Resources;安全管控是用 SecurityContext;前置校验是用 InitContainers。 1、ConfigMap 概念:…...
YUV实践记录
文章目录YUV基础介绍:不同采样YUV格式的区别为什么要使用YUV格式呢?YUV的存储方式Android中的YUV_420_888附录:YUV基础介绍: YUV在做手机图像或者视频处理的时候会经常用到的一个格式,用此文来记录YUV相关介绍…...
【题解】百度2020校招Web前端工程师笔试卷(第一批):单选题、多选题
题目来源 若有错误请指正! 单选 1 分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始,若某一计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节,若…...
探索云原生技术之容器编排引擎-kubeadm安装kubernetes1.21.10(新版:针对高版本内核)
❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…...
2023广西自治区职业技能大赛“网络安全” 项目比赛任务书
2023广西自治区职业技能大赛“网络安全” 项目比赛任务书2023广西自治区职业技能大赛“网络安全” 项目比赛任务书A模块基础设施设置/安全加固(200分)A-1:登录安全加固(Windows, Linux)A-2:Nginx安全策略&a…...
Reactor模式
Reactor是一种设计模式,可以用于构建高并发的网络服务器。 Reactor模式的好处在于:可以在一个或多个reactor线程使用多路复用技术去管理所有网络连接连接建立、IO请求,保证工作线程不被IO阻塞。 前置知识:IO多路复用技术 1. 传统网…...
Git图解-IDEA中的Git操作
目录 一、配置Idea 二、项目克隆 三、文件状态识别 四、Git操作 4.1 git add--添加暂存区 4.2 git commit--提交本地仓库 4.3 git push--推送远程仓库 4.4 git pull--更新本地仓库 五、完整开发流程 5.1 步骤1:克隆项目 5.2 步骤2:创建自己开发…...
在一个web应用中应该如何完成资源的跳转
在一个web应用中通过两种方式,可以完成资源的跳转: 第一种方式:请求转发 第二种方式:重定向 转发和重定向的区别: 代码上的区别: 请求转发 // 获取请求转发器对象 RequestDispatcher dispatcher request.…...
前缀和部分题目
前缀和 前缀和指数组的前 N项之和,是个比较基础的算法 例题 面试题 17.05. 字母与数字 给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左…...
三天吃透MySQL面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
Giving You A guide to learning any topic faster than 95% of people
A guide to learning any topic faster than 95% of people: Richard Feynman was a physician who won the Nobel Prize in 1965. But he became known for his great lectures. Why? He was able to explain complex concepts in simple terms with these 4 steps: 1 • E…...
(七十七)大白话MySQL是如何根据成本优化选择执行计划的?(中)
上次我们讲完了全表扫描的成本计算方法,相信大家应该都理解了,其实还是比较简单的,今天我们来讲一下索引的成本计算方法,因为除了全表扫描之外,还可能多个索引都可以使用,但是当然同时一般只能用一个索引&a…...
原来CSS 也可以节流啊
Ⅰ、前言 「节流」 是为了减少请求的触发频率,不让用户点的太快,达到节省资源的目的 ;通常 我们采用 JS 的 定时器 setTimeout ,来控制点击多少秒才能在触发;其实 通过 CSS 也能达到 「节流」 的目的,下面…...
UE官方教程笔记03-功能、术语、操作简介
对官方教程视频[官方培训]03-UE功能、术语、操作简介 | 徐良安 Epic的笔记这一部分基本都是走马观花的简单介绍功能世界创建建模Mesh editingtool是一个全新的建模工具,具备大多数的主流建模软件的核心功能HOUDINI ENGINE FOR UNREALHoudini编辑器,可以用…...
BN,LN,IN,GN的理解和用法
绿色区域表示将该区域作用域(四种方法都贯穿了w,h维度),即将该区域数值进行归一化,变为均值为0,标准差为1。BN的作用区域时N,W,H,表示一个batch数据的每一个通道均值为0,标准差为1;LN则是让每个数据的所有channel的均值…...
Linux:epoll模式web服务器代码,代码debug
源码: https://blog.csdn.net/weixin_44718794/article/details/107206136 修改的地方: 修改后代码: #include <stdio.h> #include <unistd.h> #include <stdlib.h> //#include “epoll_server.h” #ifndef _EPOLL_SER…...
SpringSecurity学习(四)密码加密、RememberMe记住我
文章目录密码加密一、简介密码为什么要加密常见的加密解决方案PasswordEncoder详解DelegatingPasswordEncoder二、自定义加密方式1. 使用灵活的密码加密方案(BCryptPasswordEncoder)加密验证(推荐)需要在密码前指定加密类型{bcryp…...
vue专项练习
一、循环实现一个列表的展示及删除功能 1.1 列表展示 1、背景: 完成一个这样的列表展示。使用v-for 循环功能 id接口名称测试人员项目名项目ID描述信息创建时间用例数1首页喵酱发财项目a1case的描述信息2019/11/6 14:50:30102个人中心张三发财项目a1case的描述信…...
ArcGIS实战:从DEM数据到精美立体晕渲图的调色与渲染全流程
1. 认识DEM数据与立体晕渲图 第一次接触DEM数据时,我完全被那些密密麻麻的数字搞懵了。后来才发现,这些数字其实就是地形的"指纹"。DEM(Digital Elevation Model)就像是用数字搭建的微缩景观,每个像素点都记…...
MySQL 如何正确实现“随机采样”
在开发英语学习或社交应用时,随机展示单词或消息是一个高频需求。然而,看似简单的“随机”逻辑,如果实现方式不当,会随着数据量的增长演变为系统瓶颈 。 1. 性能陷阱:order by rand() 最直观的写法是 select word from…...
基于ARP欺骗的中间人攻击的Python实现
摘要:本文在模拟网络攻击实验环境中,使用Python的scapy模块构造ARP数据包发送给目标机进行ARP欺骗,成功实施了中间人攻击,然后嗅探局域网内部网络流量,截取HTTP协议数据包进行解析,初步实现了在被攻击者浏览…...
从标注到部署:用LabelImg和MaixHub,在K210上跑通你的第一个“汽车识别”模型全流程
从零构建汽车识别模型:LabelImg标注与K210部署实战指南 在智能硬件开发领域,K210芯片以其高效的AI推理能力成为边缘计算的热门选择。本文将带您完整走通一个汽车识别项目的全流程——从数据标注到模型部署。不同于市面上泛泛而谈的教程,我们聚…...
Uvicorn搭配FastAPI实战:5分钟从安装到部署一个高性能API接口
Uvicorn搭配FastAPI实战:5分钟从安装到部署一个高性能API接口 在Python生态中构建高性能API从未如此简单。当开发者需要快速搭建一个既能处理高并发请求又具备优雅代码结构的服务时,FastAPI与Uvicorn的组合正成为越来越多技术团队的首选方案。这套组合拳…...
PARD-SSM:基于概率状态空间模型的多阶段网络攻击检测
1. 项目概述在网络安全领域,传统的入侵检测系统(IDS)面临着多阶段攻击检测的严峻挑战。攻击者通常会按照"攻击链"(Kill Chain)的步骤逐步渗透系统,从最初的侦察阶段到最终的数据窃取,每个阶段的网络流量特征可能单独看起来都像是正…...
蓝桥杯-2026年C++B组省赛
(题目来源于洛谷,省一代码分享)P16232 [蓝桥杯 2026 省 B] 青春常数题目背景本站蓝桥杯 2026 省赛测试数据均为洛谷自造,与官方数据可能存在差异,仅供学习参考。题目描述小蓝与蓝桥杯的缘分已经走到了第四个年头。从 2…...
LinkedIn内容自动化发布:基于Node.js与Playwright的实战指南
1. 项目概述:为什么我们需要一个LinkedIn帖子自动化工具?如果你在运营个人品牌、管理公司账号,或者从事市场营销、招聘工作,那么对LinkedIn这个平台一定不陌生。它早已不是单纯的求职网站,而是全球最大的职业社交与内容…...
1、Chrome Elements面板:从入门到精通的网页调试实战指南
1. Chrome Elements面板:你的网页调试瑞士军刀 第一次打开Chrome开发者工具时,那个标着"Elements"的标签页看起来就像是一堆杂乱无章的HTML代码。但当我真正开始理解它的功能后,它迅速成为了我每天使用最频繁的开发工具。Elements面…...
清华PPT模板:3分钟打造专业学术演示的终极指南
清华PPT模板:3分钟打造专业学术演示的终极指南 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报、毕业答辩或重要演示的PPT设计而烦恼吗?清华PPT模板为你提供了完美的…...
