Android下使用Hessian与Java服务端通讯

转载http://www.cnblogs.com/over140/archive/2010/07/30/1788563.html

前言

   随着项目演示版的接近尾声,开始准备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这个方法,后来改用自己的服务端之后一下子就成功了。好的开始是成功的一半  :) 接下来还会测试传值、大数据量及是否有中文问题等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值