小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Delphi和Java實現(xiàn)webservice架構(gòu)

 jimmylin88cn 2007-05-19


  Webservice現(xiàn)在已經(jīng)不是什么新技術(shù)了,用java建立webservice是快捷的,但是用java在制作客戶端的感覺上總是不如 Delphi的(個人感覺,java高手們不要笑話我),那我們就用java實現(xiàn)webservice的服務(wù)端程序,delphi制作客戶端。
   
    一.環(huán)境搭建
    
    jdk和tomcat的安裝和配置我在這里不進行行介紹了。說明一點我的tomcat是安裝在D:\tomcat,設(shè)定端口是8099。

 


    安裝Axis
     1.可以從http://ws./axis/下載axis的最新版本,我使用的是axis1.2。
     2.解壓縮axis-bin-1_2beta.zip,將axis-1_2beta目錄中webapps下的axis目錄全部拷貝到tomcat的安裝目錄中webapps下。
     3.將axis\lib中的所有jar文件都添加到classpath系統(tǒng)變量中。

     注(用戶需根據(jù)自己的安裝路徑進行更改):
     
      .;
      d:\tomcat\webapps\axis\WEBINF\lib\axis.jar;
      d:\tomcat\webapps\axis\WEB-INF\lib\saaj.jar;
      d:\tomcat\webapps\axis\WEB-INF\lib\commons-logging.jar;
      d:\tomcat\webapps\axis\WEB-INF\lib\commons-discovery.jar;
      d:\tomcat\webapps\axis\WEB-INF\lib\wsdl4j.jar;
      d:\tomcat\webapps\axis\WEBINF\lib\jaxrpc.jar;
   

     4.啟動tomcat訪問http://cbf107:8099/axis/index.html(這里使用的主機名和端口號和使用的tomcat所配置一致)。
    可以見到如下頁面:

      

    二.Web Service服務(wù)端開發(fā)
  
    寫一個java小程序:

    
     public class Test{
       public int add(int p1, int p2) {
         return p1 + p2;
       }
       public int subtract(int p1, int p2) {
         return p1 - p2;
       }
     }
    

    在D:\Tomcat\webapps\axis 目錄下新建一個test文件夾,將它保存在里面,注意:后綴名改為jws,也就是Test.jws 。
  
    在瀏覽器里訪問:http://cbf107:8099/axis/test/Test.jws可以看到

     

    點擊“Click to see the WSDL”出現(xiàn)

    
 
    將這頁另存為xml文檔(我們在使用delphi制作客戶端的時候會使用)

     

    三.delphi實現(xiàn)Web Service客戶端開發(fā)

    打開delphi新建工程,在form上放置兩個edit和兩個button,button的name命名為
btnadd和btnsubtract,caption命名為add和subtract。

    再file->new->other,選擇webservice里的WSDL importer

    

    在search UDDI..里選擇前面我們保存的那個xml文件,點擊next最后finish

        

     
    
    全部保存,我們發(fā)現(xiàn)delphi的工程中多了test1.pas
   
     

    打開發(fā)現(xiàn)有這樣一段接口申明:
      Test = interface(IInvokable)
        [‘{52882FF0-46E2-6644-A77B-CE714D4CBFD5}‘]
        function  add(const p1: Integer; const p2: Integer): Integer; stdcall;
        function  subtract(const p1: Integer; const p2: Integer): Integer; stdcall;
      end;
    
    那我們可以直接調(diào)用這個接口了,這時候我們回到界面,從delphi的webservices面版中托放一個soap到form上。

     

設(shè)置屬性如圖:

     

最后我們可以完成我們的代碼了:
    1.在uses里添加test1因為我們要引用這個單元。
    2.添加全局變量t1:test;(t1是一個test接口)
    3.為兩個button添加click事件

    procedure TForm1.btnaddClick(Sender: TObject);
    var
      i,j,z:integer;
    begin
      i:=strtoint(edit1.Text);
      j:=strtoint(edit2.Text);
      t1:=(HttPRIO1 as test);
      z:=t1.add(i,j);
      t1._Release;
      showmessage(inttostr(z));
    end; 


    procedure TForm1.btnsubstractClick(Sender: TObject);
    var
      i,j,z:integer;
    begin
      i:=strtoint(edit1.Text);
      j:=strtoint(edit2.Text);
      t1:=(HttPRIO1 as test);
      z:=t1.subtract(i,j);
      t1._Release;
      showmessage(inttostr(z));
    end;

    4.F9運行程序進行測試
    
     

     

    看我們有用delphi實現(xiàn)了java寫的那段程序,不是嗎。

    5.也許到這里你認為應(yīng)該已經(jīng)完成了,沒錯!不過對webservice還不夠了解的
  朋友你再修改一下那個java程序,也就是將Test.jws里的這個方法 

      public int add(int p1, int p2) {
        return p1 + p2;
      }

      改為

      public int add(int p1, int p2) {
        return p1 + p2+10;
      }

    再運行一下你的客戶端程序看看。

    四.注:unit1的所有代碼

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Rio, SOAPHTTPClient,Test1;

    type
      TForm1 = class(TForm)
        HTTPRIO1: THTTPRIO;
        Edit1: TEdit;
        Edit2: TEdit;
        btnadd: TButton;
        btnsubstract: TButton;
        procedure Edit2KeyPress(Sender: TObject; var Key: Char);
        procedure btnaddClick(Sender: TObject);
        procedure btnsubstractClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      t1:test;

    implementation

    {$R *.dfm}


    //這里是為了讓 兩個edit只能輸入數(shù)字,edit1的onkeypress直接調(diào)用這個就可以了。
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); 
    begin
      if key in [‘0‘..‘9‘]=false then
        key:=#0;
    end;

    procedure TForm1.btnaddClick(Sender: TObject);
    var
      i,j,z:integer;
    begin
      i:=strtoint(edit1.Text);
      j:=strtoint(edit2.Text);
      t1:=(HttPRIO1 as test);
      z:=t1.add(i,j);
      t1._Release;
      showmessage(inttostr(z));
    end;

    procedure TForm1.btnsubstractClick(Sender: TObject);
    var
      i,j,z:integer;
    begin
      i:=strtoint(edit1.Text);
      j:=strtoint(edit2.Text);
      t1:=(HttPRIO1 as test);
      z:=t1.subtract(i,j);
      t1._Release;
      showmessage(inttostr(z));
    end;

    end.

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多