相关资料:

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

服务端-实例代码:

  1. unit WebModuleUnit1;
  2.  
  3. interface
  4.  
  5. uses System.SysUtils, System.Classes, Web.HTTPApp, Soap.InvokeRegistry,
  6. Soap.WSDLIntf, System.TypInfo, Soap.WebServExp, Soap.WSDLBind, Xml.XMLSchema,
  7. Soap.WSDLPub, Soap.SOAPPasInv, Soap.SOAPHTTPPasInv, Soap.SOAPHTTPDisp,
  8. Soap.WebBrokerSOAP, FireDAC.Stan.Intf, FireDAC.Stan.Option,
  9. FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def,
  10. FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Phys.MSAcc,
  11. FireDAC.Phys.MSAccDef, FireDAC.Phys.MSSQLDef, FireDAC.Stan.Param,
  12. FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, Datasnap.DBClient,
  13. Datasnap.Provider, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
  14. FireDAC.Phys.ODBCBase, FireDAC.Phys.MSSQL;
  15.  
  16. type
  17. TWebModule1 = class(TWebModule)
  18. HTTPSoapDispatcher1: THTTPSoapDispatcher;
  19. HTTPSoapPascalInvoker1: THTTPSoapPascalInvoker;
  20. WSDLHTMLPublish1: TWSDLHTMLPublish;
  21. FDConnection1: TFDConnection;
  22. FDPhysMSSQLDriverLink1: TFDPhysMSSQLDriverLink;
  23. FDQuery1: TFDQuery;
  24. DataSetProvider1: TDataSetProvider;
  25. ClientDataSet1: TClientDataSet;
  26. procedure WebModule1DefaultHandlerAction(Sender: TObject;
  27. Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  28. private
  29. { Private declarations }
  30. public
  31. function GetInfo: widestring;
  32. function SetSQL(ASQL: widestring): widestring;
  33. { Public declarations }
  34. end;
  35.  
  36. var
  37. WebModuleClass: TComponentClass = TWebModule1;
  38.  
  39. implementation
  40.  
  41. {%CLASSGROUP 'Vcl.Controls.TControl'}
  42.  
  43. {$R *.dfm}
  44.  
  45. function TWebModule1.GetInfo: widestring;
  46. begin
  47. ClientDataSet1.Close;
  48. ClientDataSet1.Open;
  49. Result := ClientDataSet1.XMLData;
  50. ClientDataSet1.Close;
  51. end;
  52.  
  53. function TWebModule1.SetSQL(ASQL: widestring): widestring;
  54. begin
  55. FDQuery1.Close;
  56. FDQuery1.SQL.Text := ASQL;
  57. try
  58. FDQuery1.ExecSQL;
  59. Result := '成功 ';
  60. except
  61. Result := '失败';
  62. end;
  63. end;
  64.  
  65. procedure TWebModule1.WebModule1DefaultHandlerAction(Sender: TObject;
  66. Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  67. begin
  68. WSDLHTMLPublish1.ServiceInfo(Sender, Request, Response, Handled);
  69. end;
  70.  
  71. end.
  1. { Invokable interface IMyData }
  2.  
  3. unit MyDataIntf;
  4.  
  5. interface
  6.  
  7. uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns;
  8.  
  9. type
  10.  
  11. { Invokable interfaces must derive from IInvokable }
  12. IMyData = interface(IInvokable)
  13. ['{865DBF5C-8DE1-4D01-AE04-16D04A3F5EF0}']
  14. function GetInfo:widestring;stdcall;
  15. function SetSQL(ASQL: widestring): widestring;stdcall;
  16. { Methods of Invokable interface must not use the default }
  17. { calling convention; stdcall is recommended }
  18. end;
  19.  
  20. implementation
  21.  
  22. initialization
  23. { Invokable interfaces must be registered }
  24. InvRegistry.RegisterInterface(TypeInfo(IMyData));
  25.  
  26. end.
  1. { Invokable implementation File for TMyData which implements IMyData }
  2.  
  3. unit MyDataImpl;
  4.  
  5. interface
  6.  
  7. uses Soap.InvokeRegistry, System.Types, Soap.XSBuiltIns, MyDataIntf;
  8.  
  9. type
  10.  
  11. { TMyData }
  12. TMyData = class(TInvokableClass, IMyData)
  13. public
  14. function GetInfo:widestring;stdcall;
  15. function SetSQL(ASQL: widestring): widestring;stdcall;
  16. end;
  17.  
  18. implementation
  19. uses WebModuleUnit1;
  20.  
  21. { TMyData }
  22.  
  23. function TMyData.GetInfo: widestring;
  24. var
  25. oDM: TWebModule1;
  26. begin
  27. oDM := TWebModule1.Create(nil);
  28. result := oDM.GetInfo;
  29. oDM.Free;
  30. end;
  31.  
  32. function TMyData.SetSQL(ASQL: widestring): widestring;
  33. var
  34. oDM: TWebModule1;
  35. begin
  36. oDM := TWebModule1.Create(nil);
  37. result := oDM.SetSQL(ASQL);
  38. oDM.Free;
  39. end;
  40.  
  41. initialization
  42. { Invokable classes must be registered }
  43. InvRegistry.RegisterInvokableClass(TMyData);
  44. 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

客户端-实例代码:

  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7. Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Data.DB,
  8. Datasnap.DBClient, Vcl.StdCtrls;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. Button1: TButton;
  13. ClientDataSet1: TClientDataSet;
  14. DataSource1: TDataSource;
  15. DBGrid1: TDBGrid;
  16. Button2: TButton;
  17. Edit1: TEdit;
  18. procedure Button1Click(Sender: TObject);
  19. procedure Button2Click(Sender: TObject);
  20. private
  21. { Private declarations }
  22. public
  23. { Public declarations }
  24. end;
  25.  
  26. var
  27. Form1: TForm1;
  28.  
  29. implementation
  30. uses IMyData1;
  31. {$R *.dfm}
  32.  
  33. procedure TForm1.Button1Click(Sender: TObject);
  34. var
  35. ows: IMyData;
  36. s: string;
  37. begin
  38. ows := GetIMyData(true,'http://localhost:8080/wsdl/IMyData',nil); //参数中可以使用配置的url
  39. s := ows.GetInfo;
  40. if length(s) <> then
  41. ClientDataSet1.xmldata := s;
  42. end;
  43.  
  44. procedure TForm1.Button2Click(Sender: TObject);
  45. var
  46. ows:IMyData;
  47. s:string;
  48. begin
  49. ows := GetIMyData(true,'http://localhost:8080/wsdl/IMyData',nil); //参数中可以使用配置的url
  50. s := ows.SetSQL('delete from usesr where yonghu=' + QuotedStr('ni2'));
  51. if length(s) <> then
  52. Edit1.Text := s;
  53. end;
  54.  
  55. end.

DelphiXE7中创建WebService(服务端+客户端)的更多相关文章

  1. DelphiXE7中创建WebService(服务端+客户端) good

    相关资料:http://www.2ccc.com/news/Html/?1507.html DelphiXE7新建WebService具体操作:1.打开“DelphiXE7”->“File”-& ...

  2. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(二) 接上篇博客,本篇博客主要包含两个内容: 4.使用Android studio创建webservice客 ...

  3. eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一)

    eclipse使用CXF3.1.*创建webservice服务端客户端以及客户端手机APP(一) 本篇博客主要包含五个内容: 1.CXF换将搭建以及eclipse配置CXF. 2.eclipse创建w ...

  4. [转载]Java创建WebService服务及客户端实现

    Java创建WebService服务及客户端实现 Java创建WebService服务及客户端实现

  5. MyEclipse创建WebService服务端和客户端

    1.新建立一个javaWeb项目,一个java类,如图: 2.接下来我们就要将项目中的TestService的这个类生成WebService服务端,选择new Web Service,如图: Next ...

  6. IDEA创建WebService服务端与客户端

    创建服务端 一.file–>new–>project 二.点击next后输入服务端名,点击finish,生成目录如下 三.在 HelloWorld.Java 文件中右击,选 Tools 的 ...

  7. idea创建WebService服务端和客户端

    创建服务端 1.file–>new–>project 2.点击next后输入服务端名,点击finish,生成目录如下 3.在 HelloWorld.Java 文件中右击,选 WebServ ...

  8. [gRPC] 在 .NET Core 中创建 gRPC 服务端和客户端

    gRPC 官网:https://grpc.io/ 1. 创建服务端 1.1 基于 ASP.NET Core Web 应用程序模板创建 gRPC Server 项目. 1.2 编译并运行 2. 创建客户 ...

  9. JAVA WEBSERVICE服务端&客户端的配置及调用(基于JDK)

    前言:我之前是从事C#开发的,因公司项目目前转战JAVA&ANDROID开发,由于对JAVA的各种不了解,遇到的也是重重困难.目前在做WEBSERVICE提供数据支持,看了网上相关大片的资料也 ...

随机推荐

  1. VC6.0下string不能用pusk_back,可用+=代替

    2013-09-11 21:14:32 在VS下运行正确的代码,拿到VC6.0下,编译出错,提示: error C2039: 'push_back' : is not a member of 'bas ...

  2. 今天晚上 中国互联网被Struts2漏洞血洗

    Apache官方今天晚上发布安全公告(官方编号S2-032/CVE编号CVE-2016-3081),Apache Struts2服务在开启动态方法调用(DMI)的情况下,可以被远程执行任意命令,安全威 ...

  3. 转 Android中进入系统设置界面

    Android软件时,常常需要打开系统设置或信息界面,来设置相关系统项或查看系统的相关信息,这时我们就可以使用以下语句来实现:(如打开“无线和网络设置”界面) Intent intent = new ...

  4. java--关键字和保留字

    关键字:Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等. 保留字:为java预留的关键字.现在还没用到,但是在升级版本中可能作为关键字. 访问控制:pr ...

  5. javascript留言板

    用DOM相关方法创建的留言板 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style> ...

  6. HDU 5311 Hidden String (暴力)

    题意:今天是BestCoder一周年纪念日. 比赛管理员Soda有一个长度为n的字符串s. 他想要知道能否找到s的三个互不相交的子串s[l1..r1], s[l2..r2], s[l3..r3]满足下 ...

  7. 使用solrj操作solr索引库

    (solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...

  8. 关于DatePicker控件在IsEnabled为False视觉效果没有明显辨识度的处理方法

    DatePicker控件在IsEnabled为False时界面没有让人看上去不可用(背景为灰色等)的效果.容易让用户迷惑. 可以用下面的代码增加设置透明度的触发器来解决(XAML以及C#方式): &l ...

  9. 浅谈Linux容器和镜像签名

    导读 从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的.这意味着把软件放到容器中相当于是一次平台移植.这也意味着一些程序可以很容易就迁移,而另一些就更困难. 我大 ...

  10. php-PHP试题

    ylbtech-doc:php-PHP试题 PHP试题 1.A,PHP试题返回顶部 1.{PHP题目}标识符是变量的名称.PHP中的标识符用“$+变量名”来表示.标识符在PHP中遵循下列选项中的那些规 ...