[hessdroid]Android下使用Hessian与Java服务端通讯的传值测试

简介:

关于Hessian以及hessdroid请参考本博文章:[hessdroid]Android下使用Hessian与Java服务端通讯(http://www.cnblogs.com/over140/archive/2010/07/30/1788563.html)。

一、测试结果截图

    1.1  服务端控制台输出截图

    

    1.2  客户端 测试对象传出 截图

    

二、通讯接口

    2.1  BasicAPI

public   interface  BasicAPI {
    
/*
     * 
     
*/
    
public  String hello();
    
    
/*
     * 测试中文字符
     
*/
    
public  String TestChinese(String str);
    
    
/*
     * 测试对象传入
     
*/
    
public   void  TestObject(TestVO vo);
    
    
/*
     * 测试对象传出
     
*/
    
public  TestVO TestObject();
    
    
/*
     * 测试HashMap
     
*/
    
public  HashMap TestHashMap(HashMap map);
    
    
/*
     * 测试数组
     
*/
    
public  String[] TestArray(String[] strArray);
    
    
/*
     * 测试泛型
     
*/
    
public  List < String >  TestList(List < String >  list);
    
}

    2.2  TestVO

public   class  TestVO  implements  Serializable {
    
public   int  Id;
    
public  String Title;
    
public  String Content;
}

三、服务端(Java Web Server)

public   class  BasicService   extends  HessianServlet  implements  BasicAPI {

     
/**
     * 
     
*/
    
private   static   final   long  serialVersionUID  =   - 8301199876420831947L ;
    
private  String _greeting  =   " Hello, world " ;

      
public   void  setGreeting(String greeting)
      {
        _greeting 
=  greeting;
      }

      
public  String hello()
      {
        
return  _greeting;
      }

    
/*
     * 测试中文传输
     * @see com.BasicAPI#TestChinese(java.lang.String)
     
*/
    @Override
    
public  String TestChinese(String str) {
        System.out.println(
" TestChinese: " + str);
        
return   " 欢迎来到服务端! " ;
    }

    
/*
     * 测试HashMap
     * @see com.BasicAPI#TestHashMap(java.util.HashMap)
     
*/
    @Override
    
public  HashMap TestHashMap(HashMap map) {
        System.out.println(
" TestHashMap: " + map.get( " abc " ));
        map.put(
" result " ,  " ok " );
        
return  map;
    }

    
/*
     * 测试TestObject传入
     * @see com.BasicAPI#TestObject(com.TestVO)
     
*/
    @Override
    
public   void  TestObject(TestVO vo) {
        System.out.println(
" TestObjectEx: " + vo.Id);
    }

    
/*
     * 测试TestObject传出
     * @see com.BasicAPI#TestObject()
     
*/
    @Override
    
public  TestVO TestObject() {
        System.out.println(
" TestObjectEx Return TestVO " );
        TestVO vo 
=   new  TestVO();
        vo.Id 
=   1 ;
        vo.Title 
=   " title " ;
        vo.Content 
=   " Content " ;
        
return  vo;
    }

    
/*
     * 测试List<String>
     * @see com.BasicAPI#TestList(java.util.List)
     
*/
    @Override
    
public  List < String >  TestList(List < String >  list) {
        System.out.println(
" TestList: " + list.get( 0 ));
        list.add(
" addOne " );
        
return  list;
    }

    
/*
     * 测试String[]
     * @see com.BasicAPI#TestArray(java.lang.String[])
     
*/
    @Override
    
public  String[] TestArray(String[] strArray) {
        System.out.println(
" TestArray: " + strArray[ 0 ]);
        strArray[
0 ]  =   " Change Form Server " ;
        
return  strArray;
    }

}

    代码说明:

      a).  关于服务端的配置请参照上篇文章:http://www.cnblogs.com/over140/archive/2010/07/30/1788563.html。

四、客户端(Android)

        String url  =   " http://192.168.1.1:8080/HessianServer/hello.do " ;
        HessianProxyFactory factory 
=   new  HessianProxyFactory();
        
try  {
            factory.setDebug(
true );
            factory.setReadTimeout(
1000 );
            BasicAPI basic 
=  (BasicAPI)factory.create(BasicAPI. class , url,getClassLoader());
            
// Hello World
            
// Toast.makeText(this, "调用结果:"+basic.hello(), Toast.LENGTH_LONG).show();
            
            
// 测试中文字符传输
//             Toast.makeText(this, "测试中文字符:"+basic.TestChinese("中文字符!"), Toast.LENGTH_LONG).show();
            
            
// 测试对象传入
//             TestVO vo = new TestVO();
//             vo.Id= 1;
//             factory.setOverloadEnabled(true);
//             basic.TestObject(vo);
            
            
// 测试对象传出
            factory.setHessian2Reply( false );
            TestVO vo 
=  basic.TestObject();
            Toast.makeText(
this ,  " TestObject: " + vo.Title, Toast.LENGTH_LONG).show();
            
            
// 测试List泛型
//             List<String> list = new ArrayList<String>() ;
//             list.add("1个元素");
//             factory.setHessian2Reply(false);
//             list = basic.TestList(list);
//             Toast.makeText(this, "TestObject:"+list.size(), Toast.LENGTH_LONG).show();
            
            
// 测试Hashmap
//             HashMap map = new HashMap();
//             map.put("abc", "123");
//             map = basic.TestHashMap(map);
//             Toast.makeText(this, "result:"+map.get("result"), Toast.LENGTH_LONG).show();
            
            
// 测试数组
//             String[] strArray = new String[]{"Send To Server"};
//             factory.setHessian2Reply(false);
//             strArray = basic.TestArray(strArray);
//             Toast.makeText(this, "TestArray:"+strArray[0], Toast.LENGTH_LONG).show();

        } 
catch  (MalformedURLException e) {
            e.printStackTrace();
        }

    代码说明:

      a).  客户端的文章也请参照上篇文章。

      b).  这里就在一个函数里面测试的,分别解注测试即可,这里例子全部测试通过。

      c).  需要特别注意String[]、List<String>以及TestVO的传出,需要加上"factory.setHessian2Reply(false);"这行代码,否则Android客户端传入到Java服务端没有问题,但是服务端返回客户端就报错,诸如0x75之类的错误。

      d).  另外如果有函数重载的话需要设置"factory.setOverloadEnabled(true);"。这里TestObject()这个地方并没有设置,也能调用成功,但是TestObject(TestVO vo)就必须设置了,这里猜想是不是有默认行为。

维护

  2011-1-8

    在数据量较多的情况下(上百上千条)使用二维字符串数组效率较高,对象数组、XML串、JSON效率都较低,注意部署时把“factory.setDebug(true);”去掉或设置为false!

  2011-5-20

在调试的情况下,如果上传的数据量较大(超过100条)可能引发异常,但是去掉调试又能正常运行,找不到原因,所以建议调试的时候把上传的数据量改小,分批上传,发布的时候可以改大。
本文转自博客园农民伯伯的博客,原文链接:[hessdroid]Android下使用Hessian与Java服务端通讯的传值测试 ,如需转载请自行联系原博主。
目录
相关文章
|
算法 IDE Java
Java 项目实战之实际代码实现与测试调试全过程详解
本文详细讲解了Java项目的实战开发流程,涵盖项目创建、代码实现(如计算器与汉诺塔问题)、单元测试(使用JUnit)及调试技巧(如断点调试与异常排查),帮助开发者掌握从编码到测试调试的完整技能,提升Java开发实战能力。
1103 0
|
缓存 监控 负载均衡
如何提升 API 性能:来自 Java 和测试开发者的优化建议
本文探讨了如何优化API响应时间,提升用户体验。通过缓存(如Redis/Memcached)、减少数据负载(REST过滤字段或GraphQL精确请求)、负载均衡(Nginx/AWS等工具)、数据压缩(Gzip/Brotli)、限流节流、监控性能(Apipost/New Relic等工具)、升级基础设施、减少第三方依赖、优化数据库查询及采用异步处理等方式,可显著提高API速度。快速响应的API不仅让用户满意,还能增强应用整体性能。
|
JavaScript NoSQL Java
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
983 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
|
NoSQL Java Shell
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
568 8
2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
|
安全 Java 测试技术
Java 项目实战中现代技术栈下代码实现与测试调试的完整流程
本文介绍基于Java 17和Spring技术栈的现代化项目开发实践。项目采用Gradle构建工具,实现模块化DDD分层架构,结合Spring WebFlux开发响应式API,并应用Record、Sealed Class等新特性。测试策略涵盖JUnit单元测试和Testcontainers集成测试,通过JFR和OpenTelemetry实现性能监控。部署阶段采用Docker容器化和Kubernetes编排,同时展示异步处理和反应式编程的性能优化。整套方案体现了现代Java开发的最佳实践,包括代码实现、测试调试
455 0
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
前端开发 JavaScript Java
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
828 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2369 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
788 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
SQL Java API

热门文章

最新文章