delphi開發WebService簡例

2021-04-13 01:35:07 字數 2189 閱讀 3287

本文介紹的是如何用delphi6開發web service程式,並把服務程式放在iis web伺服器上提供給各種客戶程式呼叫。

一編寫服務程式

選擇isapi/nsapi dynamic link library然後確定。生成乙個框架。後面的大部分原**都需要自己手工新增

第二步:定義乙個介面單元。先通過嚮導生成乙個空的單元檔案,然後在此單元中實現基本的介面(iinvokable)和定義以後客戶端程式可以呼叫的方法,原**如下:

unit unit1;

inte***ce

uses invokeregistry;//基本的結構和方法的定義都在此單元中,必須引用

type

iwebtest=inte***ce(iinvokable)//自定義的乙個結構,繼承自iinvokable

['']//通過ctrl+shift+g生成的乙個guid

function gettext():widestring;stdcall;//自定義的乙個方法,也是以後客戶可以呼叫的方法

end;

implementation

initialization//初始化

invregistry.registerinte***ce(typeinfo(iwebtest));//通過此方法來註冊介面

end.

第三步:實現第二步中所定義的介面和方法。先通過嚮導生成乙個空的單元檔案,然後定義自定義介面(iwebtest)的實現類。原**如下:

unit unit2;

inte***ce

uses invokeregistry,unit1;//引用自定義的介面單元

type

twebtest=class(tinvokableclass,iwebtest)//定義實現類,此類必須繼承自tinvokableclass,並實現自定義介面

protected

function gettext():widestring;stdcall;//申明在自定義介面中所定義的方法

end;

implementation

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程式的目錄名稱。

二編寫客戶程式:

第二步:file----->new----->other------>webservices----->soap services importer

然後在wsdl or xml schema location中填入:http://192.168.1.222/cgi-bin/*.dll/wsdl/iwebtest,然後確定即生成了乙個新的介面定義單元。

在httprio的屬性頁上的wsdllocation裡面填上http://192.168.1.222/cgi-bin/*.dll/wsdl/iwebtest;然後在httprio屬性頁上的port和service上選擇上相應的資料即可。

第三步:書寫客戶呼叫程式,原**如下:

procedure tform1.button1click(sender: tobject);

vartestobj:iwebtest;//定義物件

begin

testobj:=httprio1 as iwebtest;//建立物件

showmessage(testobj.gettext);//呼叫方法

end;

關於delphi呼叫c 寫的webservice

因為這次專案涉及到跨平台的,所採用delphi呼叫webservice 一開始的時候用delphi自動生成wsdl。呼叫hellowordl成功。非常開心,可是問題來了,helloworld是不需要傳引數,於是我就寫了乙個簡單的函式 public string returnstr string tt...

Delphi專案開發和Delphi學習筆記索引

最近準備做乙個用delphi客戶端呼叫.net的webservice的專案。所以把專案開發計畫和學習計畫寫在部落格上。希望對自己的技術有個促進。因為網上用delphi客戶端呼叫.net的webservice的專案和資料並不多,再加上我也沒做過客戶端程式,所以一些東東還要靠自己去鑽研。大致的計畫如下。...

Delphi多層開發方案比較

方案 midas dcom com asta remoteobject net 提供者 borland 微軟 微軟 http www.remobjects.com 微軟 核心技術 comcom com asta自己的,類同midas,但不依賴於com remobjects自己的webservice技...