android 通過 Hessian 與 j2ee 服務端交互
最近項目用到,記錄一下。
首先,讓j2ee那幫兄弟把服務端Hessian實現的接口類以及這個接口類公共方法所傳入、返回的那些需要序列化的類給自己,copy也行,打成jar包也行。
接口相關的類的包名和類名也必須得和服務端的相同。
剩下就是客戶端加入 hessdroid這個包了,android的一個第三方Hessian庫。
調用很簡單,下面是示例代碼:
HessianProxyFactory factory=new HessianProxyFactory();
//如果需要用戶驗證的話
//factory.setUser("uname");
//factory.setPassword("xxx");
factory.setReadTimeout(5000);
//這個就是和服務端使用的相同的接口,從j2ee兄弟那靠過來,或者他們給的jar包也行,只要包名類名相同。
XxxxInterfaceService ifs=factory.create(XxxxInterfaceService.class,url,getClass().getClassLoader());
//這兩個方法是設置使用的hessian協議版本是否為第2版,如果不是的話,就填false
//factory.setHessian2Reply(false);
//factory.setHessian2Request(false);
//現在可以直接調用接口中的方法了,就和本地一樣
Response r=ifs.getSomthing("somthing");
很簡單,比webservice方便多了。
這里順便扯一下遠程RPC。
這年頭咱也得敢潮流,只要是個android客戶端咱都要說是云端,不是么?
哪個不是與服務器交互啊,至于怎么交互,我以前是傾向于json的,他比webservice之類的soap強多了,作為云端開發者,你敢讓用戶那可憐的gprs流量來傳輸xml這種形式大于實質的數據么?
首先是webservice在android上面實現很麻煩,ksoap2用起來真的很麻煩,其次呢,誰能在sdk下找到jdk默認javax里的webservice包?谷歌都已經把它扔了,用json代替了。
Hessian呢,確實是個不錯的選擇,hessdroid在客戶端很好配置,幾行代碼搞定,傳輸的也都是序列化過的二進制數據,自己動手抓抓http包,各種遠程rpc技術的優劣在心里就能有個底了。
浙公網安備 33010602011771號