最近项目用到,记录一下。
首先,让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技术的优劣在心里就能有个底了。