DelphiXE7中创建WebService(服务端+客户端)
相关资料:
http://www.2ccc.com/news/Html/?1507.html
http://www.dfwlt.com/forum.php?mod=viewthread&tid=922
DelphiXE7新建WebService具体操作:
1.打开“DelphiXE7”->“File”->“New”->“Other”
2.“New Items”->“Delphi Projects”->“WebSrvice”->“SOAP Server Application”
3.“Stand-alone application”->“Next”
4.“VCL application”->“Next”
5.“8080”->“Finish”
6.“Create Interface for SOAPmodule?”->“Yes”
7.“Add New WebService”->输入服务名字“MyData”->“OK”
8.保存全部工程文件
9.在“WebModuleUnit1”单元中放入控件:
FDConnection1
FDPhysMSSQLDriverLink1
FDQuery1
DataSetProvider1
ClientDataSet1
10.双击FDConnection1->Definition->Driver ID:->“MSAcc”->Daabase->“E:\MyData.mdb”->LoginPrompt:=False->Connected:=True
11.FDQuery1->Connection:=FDConnection1->SQL:=“select * from usesr”->Active:=True
12.DataSetProvider1->DataSet:=FDQuery1
13.ClientDataSet1->ProvideName:=DataSetProvider1
服务端-实例代码:
- unit WebModuleUnit1;
- interface
- uses System.SysUtils, System.Classes, Web.HTTPApp, Soap.InvokeRegistry,
- Soap.WSDLIntf, System.TypInfo, Soap.WebServExp, Soap.WSDLBind, Xml.XMLSchema,
- Soap.WSDLPub, Soap.SOAPPasInv, Soap.SOAPHTTPPasInv, Soap.SOAPHTTPDisp,
- Soap.WebBrokerSOAP, FireDAC.Stan.Intf, FireDAC.Stan.Option,
- FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
- FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSAcc,
- FireDAC.Phys.MSAccDef, FireDAC.Phys.MSSQLDef, FireDAC.Stan.Param,
- FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, Datasnap.DBClient,
- Datasnap.Provider, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
- FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL;
- type
- TWebModule1 = class(TWebModule)
- HTTPSoapDispatcher1: THTTPSoapDispatcher;
- HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
- WSDLHTMLPublish1: TWSDLHTMLPublish;
- FDConnection1: TFDConnection;
- FDPhysMSSQLDriverLink1: TFDPhysMSSQLDriverLink;
- FDQuery1: TFDQuery;
- DataSetProvider1: TDataSetProvider;
- ClientDataSet1: TClientDataSet;
- procedure WebModule1DefaultHandlerAction(Sender: TObject;
- Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
- private
- { Private declarations }
- public
- function GetInfo: widestring;
- function SetSQL(ASQL: widestring): widestring;
- { Public declarations }
- end;
- var
- WebModuleClass: TComponentClass = TWebModule1;
- implementation
- {%CLASSGROUP 'Vcl.Controls.TControl'}
- {$R *.dfm}
- function TWebModule1.GetInfo: widestring;
- begin
- ClientDataSet1.Close;
- ClientDataSet1.Open;
- Result := ClientDataSet1.XMLData;
- ClientDataSet1.Close;
- end;
- function TWebModule1.SetSQL(ASQL: widestring): widestring;
- begin
- FDQuery1.Close;
- FDQuery1.SQL.Text := ASQL;
- try
- FDQuery1.ExecSQL;
- Result := '成功 ';
- except
- Result := '失败';
- end;
- end;
- procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
- Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
- begin
- WSDLHTMLPublish1.ServiceInfo(Sender, Request, Response, Handled);
- end;
- end.
- { Invokable interface IMyData }
- unit MyDataIntf;
- interface
- uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns;
- type
- { Invokable interfaces must derive from IInvokable }
- IMyData = interface(IInvokable)
- ['{865DBF5C-8DE1-4D01-AE04-16D04A3F5EF0}']
- function GetInfo:widestring;stdcall;
- function SetSQL(ASQL: widestring): widestring;stdcall;
- { Methods of Invokable interface must not use the default }
- { calling convention; stdcall is recommended }
- end;
- implementation
- initialization
- { Invokable interfaces must be registered }
- InvRegistry.RegisterInterface(TypeInfo(IMyData));
- end.
- { Invokable implementation File for TMyData which implements IMyData }
- unit MyDataImpl;
- interface
- uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns, MyDataIntf;
- type
- { TMyData }
- TMyData = class(TInvokableClass, IMyData)
- public
- function GetInfo:widestring;stdcall;
- function SetSQL(ASQL: widestring): widestring;stdcall;
- end;
- implementation
- uses WebModuleUnit1;
- { TMyData }
- function TMyData.GetInfo: widestring;
- var
- oDM: TWebModule1;
- begin
- oDM := TWebModule1.Create(nil);
- result := oDM.GetInfo;
- oDM.Free;
- end;
- function TMyData.SetSQL(ASQL: widestring): widestring;
- var
- oDM: TWebModule1;
- begin
- oDM := TWebModule1.Create(nil);
- result := oDM.SetSQL(ASQL);
- oDM.Free;
- end;
- initialization
- { Invokable classes must be registered }
- InvRegistry.RegisterInvokableClass(TMyData);
- end.
DelphiXE7客户端具体操作:
1.打开“DelphiXE7”->“File”->“New”->“Other”
2.“New Items”->“Delphi Projects”->“WebSrvice”->“WSDL Importer”
3.“Import WSDL”->WSDL Source中输入“http://localhost:8080/wsdl/IMyData”->“Next”
4.“Automatic SOAP versioning.(Recommended)”->“Next”
5.默认选项->“Finish”
6.Delphi会自动生成IMyData文件->保存
7.放入控件
ClientDataSet1
DataSource1
DBGrid1
8.DataSource1->DataSet:=ClientDataSet1
9.DBGrid1->DataSource:=DataSource1
客户端-实例代码:
- unit Unit1;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Data.DB,
- Datasnap.DBClient, Vcl.StdCtrls;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- ClientDataSet1: TClientDataSet;
- DataSource1: TDataSource;
- DBGrid1: TDBGrid;
- Button2: TButton;
- Edit1: TEdit;
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- uses IMyData1;
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- var
- ows: IMyData;
- s: string;
- begin
- ows := GetIMyData(true,'http://localhost:8080/wsdl/IMyData',nil); //参数中可以使用配置的url
- s := ows.GetInfo;
- if length(s) <> then
- ClientDataSet1.xmldata := s;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- var
- ows:IMyData;
- s:string;
- begin
- ows := GetIMyData(true,'http://localhost:8080/wsdl/IMyData',nil); //参数中可以使用配置的url
- s := ows.SetSQL('delete from usesr where yonghu=' + QuotedStr('ni2'));
- if length(s) <> then
- Edit1.Text := s;
- end;
- end.
DelphiXE7中创建WebService(服务端+客户端)的更多相关文章
- DelphiXE7中创建WebService(服务端+客户端) good
相关资料:http://www.2ccc.com/news/Html/?1507.html DelphiXE7新建WebService具体操作:1.打开“DelphiXE7”->“File”-& ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...
- eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)
eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...
- [转载]Java创建WebService服务及客户端实现
Java创建WebService服务及客户端实现 Java创建WebService服务及客户端实现
- MyEclipse创建WebService服务端和客户端
1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...
- IDEA创建WebService服务端与客户端
创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...
- idea创建WebService服务端和客户端
创建服务端 1.file–>new–>project 2.点击next后输入服务端名,点击finish,生成目录如下 3.在 HelloWorld.Java 文件中右击,选 WebServ ...
- [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端
gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...
- JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)
前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...
随机推荐
- VC6.0下string不能用pusk_back,可用+=代替
2013-09-11 21:14:32 在VS下运行正确的代码,拿到VC6.0下,编译出错,提示: error C2039: 'push_back' : is not a member of 'bas ...
- 今天晚上 中国互联网被Struts2漏洞血洗
Apache官方今天晚上发布安全公告(官方编号S2-032/CVE编号CVE-2016-3081),Apache Struts2服务在开启动态方法调用(DMI)的情况下,可以被远程执行任意命令,安全威 ...
- 转 Android中进入系统设置界面
Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面) Intent intent = new ...
- java--关键字和保留字
关键字:Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等. 保留字:为java预留的关键字.现在还没用到,但是在升级版本中可能作为关键字. 访问控制:pr ...
- javascript留言板
用DOM相关方法创建的留言板 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style> ...
- HDU 5311 Hidden String (暴力)
题意:今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为n的字符串s. 他想要知道能否找到s的三个互不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]满足下 ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- 关于DatePicker控件在IsEnabled为False视觉效果没有明显辨识度的处理方法
DatePicker控件在IsEnabled为False时界面没有让人看上去不可用(背景为灰色等)的效果.容易让用户迷惑. 可以用下面的代码增加设置透明度的触发器来解决(XAML以及C#方式): &l ...
- 浅谈Linux容器和镜像签名
导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大 ...
- php-PHP试题
ylbtech-doc:php-PHP试题 PHP试题 1.A,PHP试题返回顶部 1.{PHP题目}标识符是变量的名称.PHP中的标识符用“$+变量名”来表示.标识符在PHP中遵循下列选项中的那些规 ...