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

简介:

一、准备

    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实现远程调用

本文转自博客园农民伯伯的博客,原文链接:[hessdroid]Android下使用Hessian与Java服务端通讯,如需转载请自行联系原博主。

目录
相关文章
|
15天前
|
Java 调度 Android开发
Android经典实战之Kotlin的delay函数和Java中的Thread.sleep有什么不同?
本文介绍了 Kotlin 中的 `delay` 函数与 Java 中 `Thread.sleep` 方法的区别。两者均可暂停代码执行,但 `delay` 适用于协程,非阻塞且高效;`Thread.sleep` 则阻塞当前线程。理解这些差异有助于提高程序效率与可读性。
39 1
|
24天前
|
消息中间件 负载均衡 Java
Java微服务通讯方式有哪些?
【8月更文挑战第18天】Java微服务通讯方式有哪些?
28 1
|
1月前
|
Android开发
Cannot create android app from an archive...containing both DEX and Java-bytecode content
Cannot create android app from an archive...containing both DEX and Java-bytecode content
17 2
|
2月前
|
Java Android开发 C++
🚀Android NDK开发实战!Java与C++混合编程,打造极致性能体验!📊
【7月更文挑战第28天】在 Android 开发中, NDK 让 Java 与 C++ 混合编程成为可能, 从而提升应用性能。**为何选 NDK?** C++ 在执行效率与内存管理上优于 Java, 特别适合高性能需求场景。**环境搭建** 需 Android Studio 和 NDK, 工具如 CMake。**JNI** 构建 Java-C++ 交互, 通过声明 `native` 方法并在 C++ 中实现。**实战** 示例: 使用 C++ 计算斐波那契数列以提高效率。**总结** 混合编程增强性能, 但增加复杂性, 使用前需谨慎评估。
83 4
|
2月前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
38 3
|
1月前
|
设计模式 安全 Java
Java多线程通讯
这些机制都是多线程通信的关键,使用它们可以在Java中实现高效、安全的线程协作。在实现多线程通信时,需注意死锁、饥饿、竞态条件等多线程问题。确保对多线程的理解深入和正确的设计模式应用将会是编写稳健多线程程序的基础。
11 0
|
3月前
|
存储 Java 数据库连接
Android Java开发异步
【6月更文挑战第15天】
|
3月前
|
Java
java使用多线程编写服务端与客户端文件上传程序
java使用多线程编写服务端与客户端文件上传程序
|
3月前
|
Java
java使用ServerSocket和Socket实现客户端与服务端通讯
java使用ServerSocket和Socket实现客户端与服务端通讯
|
3月前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
38 0