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

Delphi Web Service(2)

編輯:Delphi

用delphi的THTTPRIO控件調用了c#寫的webservice。

下面是我調試時遇到的一些問題:

1,導入wsdl文件:file--new----other----wenservice---WSDLimporter---輸入wsdl地址:如下:http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?wsdl

注意末尾的:'?wsdl'不能少。要不可能會說找不到。

2,設置THTTPRIO控件的屬性:

 後來賦給URL屬性,就不報錯了。

3,傳遞參數是web服務端總為空:

在導入的接口單元的聲明部分添加如下代碼:

InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceCallSoap),ioDocument);//其中紅色部分為導入接口名稱。

 

下面是客戶端的簡單代碼:

procedure TForm1.btn1Click(Sender: TObject);
var
  s:WideString;
begin
  s:='打分得分';
  edt1.Text:=(htpr1 as WebServiceCallSoap).OperaterLogin('1','dd',s);//operaterLogin為接口方法。

end;

end.

 

==========================================================================

下面說明如何編寫用於IIS發布的ISAPI類型的WebService。
1、 New|Other|WebServices|SOAP Server Application|這裡先選擇建立Web App Debugger類型的WebService,因為這種類型的WebService便於調試,

        當我們調試好它,准備發布時再將 此類型轉換為ISAPI類型。
2、 選擇Web App Debugger後,隨便輸入一個ClassName,這裡我們輸入“Test”
3、 隨後Delphi會詢問你是否建立接口單元,選擇是,然後輸入接口的名字,我們輸入Main,
   Delphi將自動建立接口單元(名字為你輸入的接口名+Intf結束,即MainIntf)和實現接口的單 元(名字為你輸入的接口名+Impl,即MainImpl)。到此一個空的WebService已建立好。
4、 接下來我們將編寫供別人調用的WebService函數。在此我們編寫一個簡單的例子。打開接口單元
(MainIntf),在Type後,接口聲明後添加接口函數
“function GetMsg(AMsg: string): String; stdcall;”,函數後面必須加上“stdcall”。

5、接口函數的聲明已經完成,下面就是要實現這個函數了。打開接口實現單元(MainImpl),
   在public中寫上該函數的聲明,在implement後寫該函數的實現。

6、到此,WebService已經撰寫完畢。接下來是調試。在我們新建的時候,Delphi已經為我們建立了一個Unit1和其窗體,在Unit1中引用接口單元(MainImpl),然後在窗體中加一個
   按鈕,在按鈕的單擊事件中調用剛才寫的WebService函數就可以調試了,

7、調試成功後就可以轉類型了,將Web App Debugger類型轉換為ISAPI類型其實很簡單,我們先重新建一個ISAPI類型的WebService項目,依次選擇New|Other|WebServices|SOAP Server Application|ISPA/…,提示是否創建接口時選擇“是”,然後輸入和剛才一
   樣的接口名,接著保存好,然後將調試成功的Web App Debugger類型的WebService項目中的
   接口單元和接口實現單元復制替換掉剛剛創建的ISAPI類型項目中的接口單元和接口實現單元,
   然後打開ISAPI類型的WebService,編譯生成dll。至此ISAPI類型的WebService建立成功。


8、將ISAPI類型的WebService發布到IIS上。在IIS中新建站點,新建時將執行權限設置成“腳本
   和可執行文件”,將WebService整個項目拷貝到站點文件夾下,啟動站點,該WebService就算
   發布成功了,如果IIS是6.0以上的注意在Web服務擴展中將“所有未知ISAPI擴展”設置為允許,
   具體設置可參見IIS幫助文檔。

9、如何用Delphi調用剛才寫的WebService。在浏覽器中輸入剛才站點的路徑,如:
   http://192.168.1.5:90/,浏覽器轉到項目所在文件夾,

   點擊bin,打開生成的dll文件夾,再點擊生成的dll文件,打開如下圖所示的的dll描述頁面,
   該dll中有三個接口函數HZ,LJ,SaveData,它們都是供別人調用的接口函數。

   點擊WSDL打開WSDL描述頁面,此時復制該頁面的網址,這個網址是我們要用到的。

10、 得到網址後,新建一個Application,我們就在這個Application中調用剛才的WebService。
     依次點擊New|Other|WebServices|WSDL Import,如後提示輸入網址,我們輸入剛才復制的網址,點擊next,finish,此時Delphi將自動添加一個單元,該單元就是調用WebService的
     單元,有了這個單元我們就可以調用WebService了。在Unit1中引用該單元,再添加一個按鈕 在按鈕的單擊事件中聲明一個接口對象,然後調用自動生成單元中的GetMainIntf(該方法是
     自動生成的)函數給這個接口對象賦值,然後就可以用這個接口對象調用接口函數了。

 

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