相关资料: http://www./news/Html/?1507.html http://www./forum.php?mod=viewthread&tid=922 DelphiXE7新建WebService具体操作: 服务端-实例代码: 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客户端具体操作: 客户端-实例代码: 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.
|
|