翻譯|使用教程|編輯:況魚杰|2019-06-19 16:23:33.313|閱讀 1124 次
概述:在本教程中,將會展示如何在Delphi中使用RealThinClient SDK構(gòu)建一個Web服務(wù)器。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
RealThinClient SDK是用于開發(fā)標準的HTTP(S)服務(wù)器,ISAPI擴展以及客戶端的VCL控件。可用于Windows下的CodeGear Delphi 6-2010。關(guān)于RealThinClient SDK的教程會持續(xù)更新,本節(jié)是RealThinClient SDK的第一課,如何構(gòu)建一個Web服務(wù)器。
構(gòu)建一個Web服務(wù)器需要四個大步驟:
創(chuàng)建一個項目
添加兩個RealThinClient SDK組件(RtcHTTPServer和RtcDataProvider)
配置三個事件。
檢查我們的Web服務(wù)器是否正常工作。
具體操作如下:
創(chuàng)建一個新的VCL Forms項目。在RAD Studio中,選擇File -> New。
創(chuàng)建之后如下所示:
在表單中添加RtcHttpServer組件。在RTCServer組中添加一個RtcHttpServer組件,(要創(chuàng)建一個EXE文件,使用RtcHttpServer組件,如果用ISAPI的DLL方式,將使用TRtcISAPIServer組件)。
然后將其拖到Form1區(qū)域。
設(shè)置偵聽請求的端口。選擇端口80(通常,所有Web服務(wù)器默認在端口80上偵聽)。
轉(zhuǎn)到組件屬性。單擊RtcHttpServer1組件并轉(zhuǎn)到屬性部分。如果屏幕上未顯示屬性窗口,請按F11,在屬性窗口中,查找名為ServerPort的屬性并將其值設(shè)置為80。
創(chuàng)建表單后,RtcHttpServer1組件開始監(jiān)聽。雙擊Form1或者選擇Form1,轉(zhuǎn)到屬性窗口,點擊Events>OnCreate,Delphi將為OnCreate()事件創(chuàng)建處理程序并將其顯示在屏幕上。
注意:必須將代碼添加到FormCreate事件中。要求RtcHttpServer在應(yīng)用程序開始執(zhí)行后立即開始偵聽請求,因此不需要任何其他類型的控件來啟動服務(wù)器。
procedure TForm1.FormCreate(Sender: TObject); begin RtcHttpServer1.Listen(); end;
RtcHttpServer組件的Listen()方法可以接受一個參數(shù): Restarting,默認設(shè)置為False。此參數(shù)與RestartOn結(jié)合使用 。RestartOn允許定義三個屬性:
ListenError:如果希望服務(wù)器在服務(wù)無法啟動時重新啟動,請將此參數(shù)設(shè)置為TRUE
ListenLost:如果希望服務(wù)器在服務(wù)停止偵聽指定端口上的請求時重新啟動,請將此參數(shù)設(shè)置為TRUE。
Wait:定義服務(wù)器在嘗試重新啟動服務(wù)之前應(yīng)等待的時間(以秒為單位)。
在表單中添加RtcDataProvider。現(xiàn)在已經(jīng)準備好服務(wù)器偵聽請求,在表單中添加一個RtcDataProvider組件。將RTCServer組件中的TRtcDataProvider拖動到Form1中。
現(xiàn)在表單中已有兩個組件。
將RtcDataProvider Server屬性設(shè)置為RtcHttpServer1。
注意:哪個組件處理請求的服務(wù)器,就必須定義該組件處理那些請求。
為RtcDataProvider組件定義OnCheckRequest事件。
窗口顯示內(nèi)容:
本節(jié)的代碼有兩種方式:
使用with
procedure TForm1.RtcDataProvider1CheckRequest(Sender: TRtcConnection); begin with Sender as TRtcDataServer do if UpperCase(Request.FileName) = '/TIME' then Accept; end;
不使用with
procedure TForm1.RtcDataProvider1CheckRequest(Sender: TRtcConnection); var rdsSever : TRtcDataServer absolute Sender; begin if UpperCase(rdsServer.Request.FileName) = '/TIME' then rdsServer.Accept; end;
Request.Filename是客戶端請求的完整文件名。RtcDataServer組件的Request屬性還可以獲取其他數(shù)據(jù),如主機名,內(nèi)容長度和類型,查詢參數(shù),HTTP 頭等。接下來需接受“/ TIME”的請求,在這種情況下,將處理以下任何內(nèi)容:
HTTP://本地主機/時間
HTTP://本地主機/時間
//127.0.0.1/TIME (FileName請求轉(zhuǎn)換為大寫)
為RtcDataProvider組件定義OnCheckReceived事件。
窗口顯示內(nèi)容:
本節(jié)代碼如下:
使用with
procedure TForm1.RtcDataProvider1DataReceived(Sender: TRtcConnection); begin with Sender as TRtcDataServer do if Request.Complete then Write('Current Time is: ' + TimeToStr(Now)); end;
不使用with
procedure TForm1.RtcDataProvider1DataReceived(Sender: TRtcConnection); var rdsServer: TRtcDataServer absolute Sender; begin if rdsServer.Request.Complete then rdsServer.Write('Current time is: ' + TimeToStr(Now)); end;
編譯且運行項目。按F9鍵,沒有問題出現(xiàn)以下窗口:
最后轉(zhuǎn)到服務(wù)器檢查響應(yīng)。(80端口:http:// localhost / time)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: