當前位置:編程學習大全網 - 源碼下載 - Delphi的實訓心得體會

Delphi的實訓心得體會

用Delphi編寫WebService的心得體會

Dispatch: 派遣,分派 Invoke: 調用 Invokable: 可調用接口

TReomtable: WebService中自定義類都是繼承自該類 TSOAPAttachment: Attachment:附件,壹種流類型,可以返回流數據 CGI:(EXE)

ISAPI:(DLL) Base64編碼: uses EncdDecd; s := EncodeString(s); //加 base64 編碼 s := DecodeString( str ); //解碼 UTF8: UTF8 是8位的UNICODE字符,而ASCII是7位 ,gb2312和unicode是2字節/字,utf8是3字節/字utf8類似以前的8位轉7位的編碼,是為 了 在網絡間不同系統的通訊方便而作的轉換。 幾乎所有用.Net寫的WebService只支持DOC方式、Delphi寫的只支持RPC方式;J2ME目前對Web Service的支持僅限於RFC172,而 RFC172要求必須為DOC方式(sun怎麽偏袒MS?)!

為了在設計中減少障礙,下面還介紹幾個概念。

1) SOAP:SOAP是壹種簡單有效的數據傳輸協議,用於分布式網絡環境下數據信息交換,它以XML 作為數據傳輸的格式,搭配Internet上標準的傳輸協議HTTP、SMTP、TCP等來傳送信息。從本質上看,SOAP事實上只是將Request和Response經由XML格式把數據打包,達到雙方溝通的目的。

2) WSDL:WSDL(Web Service Description Language)是壹種以XML格式描述的Web Service語言,當Web Service Provider 要對外公布提供的 Web Service,就需要通過WSDL來構建描述語言。 在WSDL中有兩個非常重要的要素: :此WSDL文件所要描述的Web Service集合; 每壹個Port代表外界Client可以和此Service溝通的壹個進入點,壹個Port會指定壹個Binding方式。

3):處理中文亂碼的問題: 將HttpRio的 Converter 的 Options 的 soUTF8InHeader 設為 True 將生成soap消息的HTTPSoapDispatcher控件,添加encoding為gb2312 HTTPRIO.HTTPWebNode.UseUTF8InHeader := True;

4)在Delphi中,能夠傳遞的自定義類型的對象要繼承TRemotable,

5:修正壹個服務器端的壹個Bug:將ISAPIThreadPool和ISAPIApp的次序變壹下:ISAPIApp必須在ISAPIThreadPool之前: uses ... ISAPIApp, ISAPIThreadPool 解決如下錯誤: Received content of invalid Content-Type setting:text/html -SOAP"expects"text/xml" 6:"XML document must have a top level element. Line: 0" 錯誤,我該如何解決 哈納斯 (2002-08-05 17:26:00) 我也曾碰到同樣的問題 解決方法是:別設Pub\Scripts目錄下面.

//編寫客戶端 --ok

(1):File--->New--->other---->WebSerice--->Wsdl Importer: 對話框1:WsDl Source:輸入==>http://服務器名/scripts/應用程序名/wsdl/相應接口 ,然後Next下步.然後點finish

(2):添加壹個普通的窗體,上面放WebService中的控件:HTTPRIO,編寫它的OnAfterExecute ,OnBeforeExecute事件 連接服務:http://server/script/MyWebService.dll/Soap/ImyWeb ***請註意是Soap/接口 FAttachService為WebService的接口 if FAttachService = nil then begin FAttachService := GetiMyWeb(False, EditUrl.Text); (FAttachService as IRIOAccess).RIO.OnBeforeExecute := HTTPRIO1BeforeExecute; (FAttachService as IRIOAccess).RIO.OnAfterExecute := HTTPRIO1AfterExecute; end; Result := FAttachService; ******************************************************************************* (HTTPRIO1 as ITest).TestFunction(aParam, bParam);

(3):註意在IIS中設置Script的是否有執行權限.

編寫壹個基於Soap DataModule的三層數據庫應用

服務器端:

建立壹個Web App Debugger executable類型,不需要接口,添加壹個Soap Data Module,放上AdoCon,AdoDataSet,DataSetProvider1 設置數據好連接,利用AdoDataSet打開壹個數據集,然後編譯運行,打開Web App Debugger查看是否正確.

客戶端:

(1)建立壹個普通的應用程序,添加SoapConnection1組件,設置他的url:格式為:http://localhost:1024/Demo3.wadSoapDemo3/soap

(2)添加壹個ClientDataSet 設置它的RemoteServer=SoapConnection1,provideName=DataSetProvider1 (註意將Web App Debugger打開) (3)Active就可以看到數據了.

WebService的服務器端的調試

(1):編寫服務器時選擇:Web App Debugger executable類型

(2):編寫完成後運行壹次服務器,則系統將把該webservice的類註冊

(3):啟動Tool--->Web App Debugger,設置servers的options port============1024 default url=====http://localhost:1024/Demo3.wadSoapDemo3/wsdl 其中demo3為exe程序的名字, wadSoapDemo3為建立服務器的時 候填寫的類名稱,可在主Form的initialization中找到:TWebAppSockObjectFactory.Create('wadSoapDemo3')

(4)打開ie,在地址輸入:http://localhost:1024/Demo3.wadSoapDemo3/wsdl就可以查看接口了

  • 上一篇:尚學堂的Python課程學習路線是什麽
  • 下一篇:壹款APP從開發到交付的具體流程
  • copyright 2024編程學習大全網