前言
隨著項目示範版的接近尾聲,開始準備Android的方方面面,其中很重要一點就是和服務端通訊,這裡試用和評估一下Android平台下的Hessian,雖然非官方版本,但是一直有更新。
連結
1. Hessian官方網站:
說明:Hessian也是一個輕量級的,自訂描述的二進位RPC協議.因為它是一個二進位協議,所以它很適合於發送位元據而需要使用其它附件來擴充這個協議。
地址:http://hessian.caucho.com/
2. hessdroid項目:
說明:hessdroid 是Resin 的Hessian二進位遠程調用架構在Android上非官方移植版本。
地址:http://code.google.com/p/hessdroid/
3. Mercurial
說明:是一個輕量級的分布式版本控制系統,我選的是TortoiseHG for Windows 32bit,這裡用於下載hessdroid原始碼的工具。
地址:http://mercurial.selenic.com/downloads/
聲明
歡迎轉載,但請保留文章原始出處:)
部落格園:http://www.cnblogs.com
農民伯伯: http://www.cnblogs.com/over140/
本文
一、準備
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。
二、通訊介面
和WebService一樣,準備一個介面:
public interface BasicAPI {
public String hello();
}
二、服務端
服務端為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.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錯誤,模擬器上還好,真機上比較明顯,可能是由於網路原因造成,此時應該把逾時時間設定稍晚長一些。
2011-8-9
提醒大家記得加許可權:<uses-permission android:name="android.permission.INTERNET" />
2011-9-26
補充Hessian兩篇文章:
Hessian輕量級二進位遠程調用架構
《Spring技術內幕》學習筆記18——Spring使用Hessian實現遠程調用
結束
注意官方的測試連結"http://hessian.caucho.com/test/test"是連不通的,一直都是報錯找不到hello這個方法,後來改用自己的服務端之後一下子就成功了。好的開始是成功的一半 接下來還會測試傳值、大資料量及是否有中文問題等。