[hessdroid]Android下使用Hessian與Java服務端通信

前言java

   隨着項目演示版的接近尾聲,開始準備Android的方方面面,其中很重要一點就是和服務端通信,這裏試用和評估一下Android平臺下的Hessian,雖然非官方版本,可是一直有更新。
 web

 

連接服務器

  1.  Hessian官方網站:網絡

      說明:Hessian也是一個輕量級的,自定義描述的二進制RPC協議.由於它是一個二進制協議,因此它很適合於發送二進制數據而須要使用其它附件來擴展這個協議。app

      地址:http://hessian.caucho.com/框架

  2.  hessdroid項目:eclipse

      說明:hessdroid 是Resin 的Hessian二進制遠程調用框架在Android上非官方移植版本。分佈式

      地址:http://code.google.com/p/hessdroid/ide

  3.  Mercurial工具

      說明:是一個輕量級的分佈式版本控制系統,我選的是TortoiseHG for Windows 32bit,這裏用於下載hessdroid源代碼的工具。

      地址:http://mercurial.selenic.com/downloads/

 

聲明

  歡迎轉載,但請保留文章原始出處:)
 

  農民伯伯: http://over140.blog.51cto.com/  

 

正文

  1、準備

    1.1  下載源碼

      下載Mercurial,安裝完以後右鍵TortoiseHg->Clone->Source Path,輸入"https://hessdroid.googlecode.com/hg/"下載便可。

    1.2  打包成jar

      源碼直接用eclipse導入便可,而後導出成jar便可,這裏我導成了hessdroid.jar。懶得本身導的能夠從這裏下載:http://download.csdn.net/source/2584651。

 

  2、通信接口

    和WebService同樣,準備一個接口:

public   interface  BasicAPI {
  
public  String hello();
}


 

  2、服務端

    服務端爲Tomcat+Servlet。

    2.1  導入Hessian官方Java的jar包,從http://hessian.caucho.com/下一個導入就行,本文例子是hessian-3.0.20.jar

    2.2  BasicService.java

public   class  BasicService  extends  HessianServlet  implements  BasicAPI {
  
private  String _greeting  =   " Hello, world " ;

  
public   void  setGreeting(String greeting)
  {
    _greeting  =  greeting;
  }

  
public  String hello()
  {
    
return  _greeting;
  }
}

    2.3  在web.xml中配置接受servlet,這裏寫成:

     < servlet >
         
< servlet-name > hello </ servlet-name >
         
< servlet-class > com.BasicService </ servlet-class >
    
</ servlet >
      
< servlet-mapping >
          
< servlet-name > hello </ servlet-name >
          
< url-pattern > /hello.do </ url-pattern >
      
</ servlet-mapping >


 

  3、客戶端
 

    3.1  新建Android項目,導入hessdroid.jar(別搞混淆了,是本身打包生成的那個jar包)。

    3.2  在界面上添加一個按鈕,並添加點擊事件:

     public   void  OnClick11(View view)
    {
        String url  =   " http://192.168.1.1:8080/HessianServer/hello.do " ;
        HessianProxyFactory factory  =   new  HessianProxyFactory();
        
try  {
            factory.setDebug( true );
            factory.setReadTimeout( 5000 );
            BasicAPI basic  =  (BasicAPI)factory.create(BasicAPI. class , url,getClassLoader());
            Toast.makeText( this " 調用結果: " + basic.hello(), Toast.LENGTH_LONG).show();
        }  catch  (MalformedURLException e) {
            e.printStackTrace();
        }
    }

    3.3  成功截圖:

 

 

維護

  2010-11-11

    由jiangcoco分享的經驗:鏈接服務器出現hessianConncectionException錯誤,模擬器上還好,真機上比較明顯,多是因爲網絡緣由形成,此時應該把超時時間設置稍晚長一些。

 

結束
 

   注意官方的測試連接"http://hessian.caucho.com/test/test"是連不通的,一直都是報錯找不到hello這個方法,後來改用本身的服務端以後一會兒就成功了。好的開始是成功的一半  :) 接下來還會測試傳值、大數據量及是否有中文問題等。  

相關文章
相關標籤/搜索