程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 一步一步用Delphi6實現WebService

一步一步用Delphi6實現WebService

編輯:Delphi

      本文介紹的是如何用Delphi6開發Web Service程序,並把服務程序放在IIS Web服務器上提供給各種客戶程序調用。

一編寫服務程序

第一步:File----->New----->Other------>WebServices----->Soap Server Application

選擇ISAPI/NSAPI Dynamic Link Library然後確定。生成一個框架。後面的大部分原代碼都需要自己手工添加

第二步:定義一個接口單元。先通過向導生成一個空的單元文件,然後在此單元中實現基本的接口(Iinvokable)和定義以後客戶端程序可以調用的方法,原代碼如下:

unit unit1;
interface
uses  InvokeRegistry;//基本的結構和方法的定義都在此單元中,必須引用
type
IWebTest=interface(Iinvokable)//自定義的一個結構,繼承自Iinvokable
[{A436B0D2-D490-4C80-820A-355D979E8704}]//通過Ctrl+Shift+G生成的一個GUID
function gettext():widestring;stdcall;//自定義的一個方法,也是以後客戶可以調用的方法
end;
implementation

initialization//初始化
InvRegistry.RegisterInterface(Typeinfo(IWebTest));//通過此方法來注冊接口
end.

第三步:實現第二步中所定義的接口和方法。先通過向導生成一個空的單元文件,然後定義自定義接口(IWebtest)的實現類。原代碼如下:

unit Unit2;

interface
uses  InvokeRegistry,Unit1;//引用自定義的接口單元
type
TWebTest=class(TInvokableClass,IWebTest)//定義實現類,此類必須繼承自TInvokableClass,並實現自定義接口
protected
function gettext():widestring;stdcall;//申明在自定義接口中所定義的方法
end;
implementation

{ Test }
procedure createwebtest(out obj:tobject);//此過程為創建類實例,必須手工添加
begin
obj:=TWebTest.Create;//創建類實例
end;
function TWebTest.gettext: widestring;//實現自定義方法
begin
Result:=Success;
end;
initialization//初始化
InvRegistry.RegisterInvokableClass(TWebTest,createwebtest);//注冊自定義類
end.

第四步:編譯整個應用程序,即產生一個*.dll的程序,把此程序拷貝到IIS的Cgi-bin目錄下(或者其他可執行的目錄,要根據自己的目錄來選擇),然後即可通過以下方式的鏈接訪問到Wsdl:http://192.168.1.222/cgi-bin/*.dll/wsdl訪問到以XML方式編碼的Wsdl文件了,這就是客戶端程序調用需要的文件。其中*.dll為你自己的應用程序的名字。192.168.1.222為你的Web服務器地址。Cgi-bin為你的Web服務器的可以執行Cgi程序的目錄名稱。

 

二編寫客戶程序:

第一步:新建一個Application。

第二步:File----->New----->Other------>WebServices----->Soap Services Importer

然後在Wsdl or Xml Schema Location中填入:http://192.168.1.222/cgi-bin/*.dll/wsdl/IWebTest,然後確定即生成了一個新的接口定義單元。

第二步:在主form上放上一個按鈕和一個Httprio組件(在WebServices頁上),並引用第二個單元(即通過Soap Services Importer自動生成的單元)

在Httprio的屬性頁上的WsdlLocation裡面填上http://192.168.1.222/cgi-bin/*.dll/wsdl/IWebTest;然後在Httprio屬性頁上的Port和Service上選擇上相應的數據即可。

第三步:書寫客戶調用程序,原代碼如下:

procedure TForm1.Button1Click(Sender: TObject);
var
testobj:IWebTest;//定義對象
begin
testobj:=Httprio1 as IWebTest;//創建對象
showmessage(testobj.gettext);//調用方法
end;

以上是一個簡單的例子,有興趣的可以和我討論。以上的例子還用java客戶調用通過。我的郵箱是[email protected]

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved