Delphi SOAP WebService 服务器端多个 SoapDataModule 实现相同的接口方法,接口继承

Delphi中Web服务的舞蹈:SOAP与RESTful的交响诗 通过本文的探索,我们了解了Delphi中SOAP和RESTful Web服务客户端的实现方法。SOAP以其结构化和协议性在企业级应用中占据重要地位,而RESTful则以其简洁和灵活性在现代Web应用中广受欢迎。掌握这两种技术,将使你在Delphi开发中更加游刃有余。 阅读详情

场景

WebService 服务器端,为了方便代码管理,将不同的业务逻辑,分到不同的 TSoapDataModule 里面去。这样好对代码做模块化管理。

多个 TSoapDataModule 可能需要实现相同的接口方法,每个 TSoapDataModule 模块对该方法的实现代码可能不同(因为业务不同);最简单可能性是每个模块要检查的客户端访问权限不同。

那么,在客户端,因为是调用服务器端的不同接口的相同方法,如果给每个接口写一次方法调用,代码冗余。

解决办法

服务器端:服务器端的接口,默认(IDE 自动生成的代码)从 IAppServerSOAP 继承。

如果我要多个接口里面都有一个相同的方法(或函数),可以自己定义一个接口,从 IAppServerSOAP 继承。

务器端的所有接口,从一个父类接口继承。上述相同的接口方法,声明到这个父类接口里面。

如此一来,客户端只需要一个调用父类接口的方法,根据子类接口不同,实际调用到的服务器端的实现模块就不同。搞定!

以下代码测试通过。

代码 - 服务器端接口声明

IParientIntf = interface(IAppServerSOAP)
    ['{04E35D2B-4A63-45DE-98C0-AED830BB06B7}']
    function Hello(const S: string): string; stdcall;
  end;

  //ISoapDM_A = interface(IAppServerSOAP)
  ISoapDM_A = interface(IParientIntf)
    ['{4499D900-1856-4178-8D6E-617856DBE2BD}']
  end;

  //ISoapDM_B = interface(IAppServerSOAP)
  ISoapDM_B = interface(IParientIntf)
    ['{9618B6D7-0826-47D7-AAF6-F7BB3D6F1CDE}']
  end;

服务器端,模块一的代码:

TSoapDM_A = class(TSoapDataModule, ISoapDM_A, IAppServerSOAP, IAppServer)
    FDConnection1: TFDConnection;
    FDQuery1: TFDQuery;
    DataSetProvider1: TDataSetProvider;
    DataSetProvider11111: TDataSetProvider;
  private
  
  public
    function Hello(const S: string): string; stdcall;
  end;
  
function TSoapDM_A.Hello(const S: string): string;
begin
  Result := 'Hello, ' + S + '; This is SoapDM_AAAAA';
end;

务器端,模块二的代码:

TSoapDM_B = class(TSoapDataModule, ISoapDM_B, IAppServerSOAP, IAppServer)
    FDConnection1: TFDConnection;
    FDQuery1: TFDQuery;
    DataSetProvider1: TDataSetProvider;
    DataSetProvider222222: TDataSetProvider;
  private
  
  public
    function Hello(const S: string): string; stdcall;
  end;
  
function TSoapDM_B.Hello(const S: string): string;
begin
  Result := 'Hello, ' + S + '; This is SoapDM_B';
end;

客户端代码:

procedure TForm3.DoHello(Intf: IParientIntf; const S: string);
var
  S2: string;
begin
  S2 := Intf.Hello(S);
  ShowMessage(S2);
end;

客户端调用服务器端模块一:

procedure TForm3.Button3Click(Sender: TObject);
begin

  Self.DoHello(HttpRIO1 as ISoapDM_A, '你好');
end;

客户端调用务器端模块二:

procedure TForm3.Button2Click(Sender: TObject);
begin
  Self.DoHello(HttpRIO2 as ISoapDM_B, '深圳');
end;

上述调用,在客户端需要注意的问题:

同一个 HTTPRIO1 调用了接口一,再去调用接口二,会出现 interface not support 的异常;反之亦然。采用同一个 HTTPRIO1 先后调用2个不同的接口该如何处理?暂时没看到有什么方法。

解决办法:多个 HttpRIO 实例,每个实例对应一个接口。

因此,上述代码里面,一个是 HttpRIO1 ; 另一个是 HttpRIO2;

总结

Delphi 的 WebService 框架中,服务器端由 IDE 自动创建的 TSoapDataModule 的子类模块,有它自己的接口声明。这个接口,继承自 IAppServerSOAP;

我们可以声明一个自己定义的接口,比如 IParientIntf = interface(IAppServerSOAP)

然后手动修改 IDE 创建的代码,把模块的接口的继承父类,改为 IParientIntf;

通过这样的方式,可以简化客户端的代码,无需对应每个模块,都实现一段相同的调用代码。

Delphi编写soap服务器与客户端程序 立即下载

相关推荐

Delphi编写soap服务器与客户端程序[收集].pdf

Delphi编写soap服务器与客户端程序[收集].pdf

Delphi SOAP WebService 服务器端多个 SoapDataModule 要注意的问题

本人之前有篇博客文章,讲到在 Delphi 的 Soap WebService 程序服务器端,使用多个 TSoapDataModule 的方法。文章地址在这里:https://blog.youkuaiyun.com/pcplayer/article/details/110178123内置 IdHTTPServer 的独立的 WebService 服务器端,内部有多个 TSoapDataModule,服务器端运行时,在 Delphi IDE 里面,通过 TSoapConnection 连接服务器端,ClientDataS

pcplayer的博客 2642

青藏高原冻土数据实战:如何用QGIS分析1961-2020年冻土退化趋势(附完整操作步骤)

本文详细介绍了如何使用QGIS分析1961-2020年青藏高原冻土退化趋势,包括数据准备、预处理、时空分析和模型验证等全流程操作。通过TTOP模型和Stefan方程,揭示了冻土退化的空间差异和海拔依赖性,为环境研究提供科学依据。

weixin_29276847的博客 127

delphi D10.X 生成WebService接口介绍

概述 WebService是一种跨编程语言和跨操作系统平台的远程调用技术。他是基于http的soap协议传输数据 webservice=soap=http+xml,webservice协议就是有http+xml组成的,其中xml中会用到wsdl,而wsdl是描述语言xml中的一种格式。 WebService交互的过程就是,WebService遵循SOAP协议通过XML封装数据,然后由Http协议来传输数据。 这是一种很早就出现的数据交互技术,现在的系统中很少再使用到,在用的多数是原有系统沿用下来的。 当年使

tanqth的专栏 1万+

STM32F407ZGT6最小系统:从原理图到PCB的实战设计与避坑指南

本文详细介绍了STM32F407ZGT6最小系统的设计与实现,从原理图到PCB布局的完整流程。重点解析了电源、时钟、复位和调试接口等核心模块的设计要点,提供了实用的PCB布局技巧和常见问题解决方案,帮助开发者避开设计陷阱,快速完成稳定可靠的STM32F407ZGT6最小系统设计。

weixin_30955617的博客 197

飞书文档API深度使用指南:如何用n8n社区节点绕过HTTP Request的复杂配置

本文详细解析了如何利用n8n社区节点简化飞书文档API的集成过程,绕过复杂的HTTP Request配置。通过n8n-feishu-lite社区节点,开发者可以轻松实现飞书文档的创建、编辑和查询操作,大幅提升自动化工作流的效率。文章还提供了高级应用场景和性能优化建议,帮助开发者更好地利用飞书开放平台的API功能。

weixin_29227585的博客 83

DELPHI通过WebService进行数据交互

WebService是一种可以跨语言和平台的数据交互模式,使用非常广泛,与JSon数据格式结合,更是当前非常流行的一种模式,本章针对DELPHI通过WebService进行数据的交互做一个相对简单例子应用。到当前为止,我们的服务端就创建好了,不过是个空的服务端,什么接口都没有,但我们可以运行一下看看。好了,到当前为止,我们服务端正式完成,F9运行并Star服务,不要关闭,我们开始设计客户端。好了,我们第一个函数创建完成,为了避免麻烦,我们把第二个函数也一起完成后,再来建立客户端。

2803

中文顶刊《会计研究》文本分析技术最新进展总结盘点

会计研究》是由中华人民共和国财政部主管、中国会计学会主办的国家一级学术期刊,为会计领域中文顶级期刊。随着大数据技术的日益成熟, 社交网络类文本 、上市公司披露类文本、媒体报道类文本、 其他类文本 、网络搜索数据、P2P 网络借贷文 本与分析师报告等文本数据逐渐成为财务会计的研究素材。

qq_52891550的博客 2891

Delphi 7 中使用Indy创建独立的 Web Services/SOAP 服务器(四)

强制Delphi在SOAP中使用 to use Indy Library for SOAP Reportedly there are problems with wininet.dll, when your NT service is stressed. You can improve this by specifying that the Indy library is used for t

编程小战 2196

liquibase扩展支持达梦数据库

近期项目中需要支持国产数据库,需要liquibase底层支持达梦数据库,记录下操作的详细步骤以便分享。 1.liquibase支持的数据库很多如MySQL, PostgreSQL, Oracle, Sql Server, DB2。但是达梦数据库并不支持,所以需要新建DMDatabase类来适配达梦数据库。达梦语法和Oracle很像所以只需要复制liquibase-core下的Oracle Database做些修改就可了。以下为需要修改的地方 public class DMDatabase extends A

qq_43677719的博客 5472

Transformer模型详解(图解最完整版)

Transformer由论文提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。Transformer 与 RNN 不同,可以比较好地并行训练。

2501_91695094的博客 2700

Delphi 编写调用WebService接口的小程序

Delphi 编写调用WebService接口的小程序 最近由于项目需要在编写一个webservice的客户端,网上找来了不少资料,都说可以通过delphi自带的向导来生成调用接口的文件。 如对天气预报的webservice调用http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl ,查看各地的天气预报 1、打开delphi开发软件到 File--> New--> Application 新建一个工程,在窗体上放置两个

全欣 的专栏 2317

ArcGIS Pro 3.0实战:5分钟搞定GDB批量转SHP的Python脚本(附常见错误修复)

本文详细介绍了在ArcGIS Pro 3.0中使用Python脚本将地理数据库(GDB)中的要素类批量转换为Shapefile(SHP)格式的实战方法。文章提供了从基础到增强的完整脚本,重点解决了中文路径报错、字段名截断和属性表乱码等常见问题,并分享了错误处理与编码修复技巧,帮助用户高效、准确地完成数据格式转换与交换。

happy2的博客 766

Delphi SOAP WebService 服务器端多个 SoapDataModule 的做法

以下描述的实验结果,在 Delphi 10.3.3 社区版上测试通过。 前情提要:Delphi 写 WebService 架构的三层程序如何维护 Session 简述: 用 Delphi 实现 WebService 服务器端,客户端也使用 Delphi 来开发。 服务器端,可以用 TSoapDataModule 在设计期,可视化地拖放数据库控件,连接数据库,从数据库获取数据,并通过 TDataSetProvider 输出给客户端。在客户端,则可以在服务器运行的情况下,使用 TSoapConne.

pcplayer的博客 1118

从原理到实战:深入解析 Synopsys VCS 仿真快照技术,提升验证效率

VCS Checkpoint 技术摘要 VCS Checkpoint 是 Synopsys VCS 提供的仿真状态快照功能,可将完整的仿真状态(寄存器、存储器、时钟、随机种子等)序列化保存。主要应用场景包括:跳过耗时初始化阶段、覆盖率驱动验证、Debug复现和UVM分阶段验证。核心原理是对仿真内核状态的完整序列化,需注意文件句柄等特殊对象需手动处理。 使用方式: 编译时添加 -checkpoint 选项 运行时通过 $save 系统任务或 +checkpoint 参数保存状态 通过 +restore 参数恢

元直的博客 248

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Delphi 7 中使用Indy创建独立的 Web Services/SOAP 服务器(一)

http://www.digicoast.com/delphi_soap_standalone.html

编程小战 5667

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

一步一步用Delphi6实现Web Service

      本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->Other------>WebServices----->Soap Server Application选择ISAPI/NSAPI Dynamic Link Library然后确定。生成一个

coala的专栏 1526

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Delphi调用WebService(通过SoapHeader认证)经验总结

项目(Delphi开发)需要调用另一个系统的WebService。走了不少弯路,现记录总结一下经验。以下是WebService要求: 1、WebService概述 营销Webservice接口采用Apache Axis(version 1.4)技术实现。客户端和服务器用SOAP(Simple Object Access Protocol)协议通过HTTP来交互,客户端根据WSDL描述文档生...

weixin_33965305的博客 1699

Delphi 调用webservice简单例子

1、打开delphi,File-&gt;New-&gt;Other-&gt;选webservice-&gt;WSDL importer 如下所示2、点【ok】,弹出输入WSDL 的URL地址框,输入WSDL地址,然后【Next】3、点【Next】之后,Delphi将自动生成ServerClass.pas单元4、接下来我们测试这个WS5、得出以下结果...

mpqz1065ok的专栏 9520

delphi webserver soap头(soap header)信息传送

在做一个webserver 接口的时候,需要在soap header传送登录后的SessionId,通常delphi生成接口后传送的XML里是不会有包括header数据信息的,这就只能是写代码增加上去。 那么,首先我们需要先自行定义一个类: const IS_TEXT = $0020; {一个常量,也很重要} //这个定义了 Header信息基础类 TSessionIdHeader = class(TSOAPHeader) private FValue: string;

tanqth的专栏 1万+

Delphi Soap WebService 的 HTTP Cookies

前情提要: Delphi SOAP WebService 服务器端多个 SoapDataModule 的做法 Delphi 写 WebService 架构的三层程序如何维护 Session Delphi 的 WebService 的 Cookie 操作 问题起因 在使用 Delphi 开发 SOAP WebService 服务器端和客户端的过程中,我们可以使用 HTTP Cookies 来实现用户身份验证,或者一些【状态】的传递,而客户端基本上不需要写代码。采用其它方法,每次客户端需要和服务.

pcplayer的博客 917

SOAP WebService 实现(一)

项目使用ApacheCXF框架,利用 Frontend 编程 API 来构建和 开发 Services ,像 JAX-WS。写客户端之前要先明确: 1. 服务端地址 2. 服务端接口、接口方法(方法参数、返回值)。创建服务接口 HelloService。和服务端的接口保持一致。在test文件夹下,创建测试类Server,发布服务。分别创建服务端和客户端模块。创建测试类Client,远程访问服务端。运行Server类,服务发布成功。客户端依赖与服务端项目依赖一致。客户端调用,观察服务端的日志。

uestc_tmy的博客 838

Delphi 7 中使用Indy创建独立的 Web Services/SOAP 服务器(二)

创建客户端MySOAPClient.exe (an application to consume a web service.) Step by step instructions -- Delphi 7 Enterprise Edition. Make sure the MySOAPServer.exe created earlier is running before continuing

编程小战 3420

用Delphi7实现Web Service

用Delphi7开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。 一编写服务程序     第一步:File----->New----->Other------>WebServices----->Soap Server Application选择ISAPI/NSAPI Dynamic Link Library然后确定,(如果没有做过,

Chang的专栏 4940
上一篇: Delphi SOAP WebService 服务器端多个 SoapDataModule 要注意的问题
下一篇: 类方法和类变量的使用
pcplayer
博客等级 码龄26年 633粉丝 284原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值