做android开发时你还在为gson,json而人肉序列化与反序列化吗,上传文件时你还在使用UrlConnection或者HttpClient吗?
下面提供了asp.net 服务端与 android 客户端通过hessdroid (hessian 的android版) 通信解决方案,从此你不用再为上面的问题发愁了
中小应用,使用.net 的EF(数据库优先)或linq,那是相当的方便,做个管理页面也只要拖拖控件就好了(不拖都对不起自己尤其是自己从头整到尾的项目), 当然你需要使用EmitMapper一类的东西将dto映射到EF实体类上。

服务端定义实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;namespace cn.fstudio.hessian.dto
{public class ResponseBase<T>{private int code;private string msg;private T model;public int Code{get { return code; }set { code = value; }}public string Msg{get { return msg; }set { msg = value; }}public T Model{get { return model; }set { model = value; }}}
}

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using cn.fstudio.hessian.dto;namespace aa.model
{public class UserListResponse:ResponseBase<List<UserInfo>>{private DateTime? addTime;public DateTime? AddTime{get { return addTime; }set { addTime = value; }}private byte[] fileDate;public byte[] FileDate{get { return fileDate; }set { fileDate = value; }}private bool? isAdmin;public bool? IsAdmin{get { return isAdmin; }set { isAdmin = value; }}}
}

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace aa.model
{public class UserInfo{private string userNo ;public String UserNo{get{return userNo;}set{userNo = value;}}private string username;public string Username{get { return username; }set { username = value; }}private string password;public string Password{get { return password; }set { password = value; }}private string mobile;public string Mobile{get { return mobile; }set { mobile = value; }}private string userType;public string UserType{get { return userType; }set { userType = value; }}private int recId;public int RecId{get { return recId; }set { recId = value; }}private int userLevel;public int UserLevel{get { return userLevel; }set { userLevel = value; }}}
}

View Code

实体类定义不要写成public String Field{get;set;} //因为只动生成的字段名称可能是FieldName_<>K,hessian反射时会出错

服务端接口定义与实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;using aa.model;
namespace aa.service
{public interface UserService{UserListResponse getUserlist(UserListResponse res);string hello(string name);List<UserInfo> getUsers();AInfo getAInfo();}
}

View Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using aa.service;
using aa.model;
using hessiancsharp.server;
namespace AA.ServiceImpl
{public class UserServiceImpl:CHessianHandler, UserService{#region UserService 成员public UserListResponse getUserlist(UserListResponse res){var response = res;UserInfo u = new UserInfo();u.Username = "张三";u.UserLevel = 88;response.AddTime = DateTime.Now;response.Model.Add(u);response.Code = 1;response.Msg = "终于可以了吗吗吗吗?";return response;}#endregion#region UserService 成员public string hello(string name){return DateTime.Now + "->" + name;}public List<UserInfo> getUsers(){UserInfo u = new UserInfo();u.Username = "张三";u.UserLevel = 88;return new List<UserInfo>() { u, u, u, u, u, u, u };}#endregion#region UserService 成员public AInfo getAInfo(){return new AInfo() { id = 18,name="还是中文" };}#endregion}
}

View Code

注意:mvc项目需要在routeConfig中加上 routes.IgnoreRoute("{hessian}.hessian/{*pathInfo}");
web.config中添加
   <httpHandlers>
      <add verb="*" path="UserService.hessian" type="AA.ServiceImpl.UserServiceImpl, AA.ServiceImpl" />
    </httpHandlers>

 客户端实体类:

package cn.fstudio.hessian.dto;import java.io.Serializable;public class ResponseBase<T> implements Serializable{private static final long serialVersionUID = 1L;public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public T getModel() {return model;}public void setModel(T model) {this.model = model;}private int code;private String msg;private T model;
}

View Code

package aa.model;import java.io.Serializable;
import java.util.Date;
import java.util.List;import aa.model.UserInfo;import cn.fstudio.hessian.dto.ResponseBase;public class UserListResponse extends ResponseBase<List<UserInfo>> implements Serializable {/*** */private static final long serialVersionUID = 1L;private Date addTime;private byte[] fileDate;private Boolean isAdmin;public Date getAddTime() {return addTime;}public void setAddTime(Date addTime) {this.addTime = addTime;}public byte[] getFileDate() {return fileDate;}public void setFileDate(byte[] fileDate) {this.fileDate = fileDate;}public Boolean getIsAdmin() {return isAdmin;}public void setIsAdmin(Boolean isAdmin) {this.isAdmin = isAdmin;}}

View Code

package aa.model;import java.io.Serializable;public class UserInfo implements Serializable{/*** */private static final long serialVersionUID = 1L;public String getUserNo() {return userNo;}public void setUserNo(String userNo) {this.userNo = userNo;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getMobile() {return mobile;}public void setMobile(String mobile) {this.mobile = mobile;}public String getUserType() {return userType;}public void setUserType(String userType) {this.userType = userType;}public int getRecId() {return recId;}public void setRecId(int recId) {this.recId = recId;}public int getUserLevel() {return userLevel;}public void setUserLevel(int userLevel) {this.userLevel = userLevel;}public static long getSerialversionuid() {return serialVersionUID;}private String userNo;private String username;private String password;private String mobile;private String userType;private int recId;private int userLevel;}

View Code

客户端接口定义

package aa.service;import java.util.List;import aa.model.AInfo;
import aa.model.UserInfo;
import aa.model.UserListResponse;public interface UserService {public UserListResponse getUserlist(UserListResponse req);public String hello(String name);List<UserInfo> getUsers();AInfo getAInfo();
}

View Code

        String url = "http://122.xxx.xxx.x:7086/UserService.hessian";HessianProxyFactory factory = new HessianProxyFactory();try {UserListResponse req=new UserListResponse();req.setAddTime(new Date());req.setCode(11);req.setFileDate(new byte[]{3,2,1});req.setIsAdmin(true);req.setMsg("这里我传了一些中文上去");UserInfo u=new UserInfo();u.setUsername("一个鸟人");u.setMobile("13616761237");u.setUserLevel(18);List<UserInfo> list=new ArrayList<UserInfo>();for(int i=0;i<1000;i++){list.add(u);    }req.setModel(list);factory.setDebug(true);factory.setReadTimeout(5000 * 100);UserService basic = (UserService)factory.create(UserService.class, url,getClassLoader());String response=basic.hello("xxx");UserListResponse response2=basic.getUserlist(req);//Toast.makeText(FullscreenActivity.this, "调用结果:"+ response2.getCode(), Toast.LENGTH_LONG).show();String msg=response2.getModel().get(response2.getModel().size() -1).getUsername() + "," + response2.getModel().size();new AlertDialog.Builder(FullscreenActivity.this).setTitle(response2.getFileDate().length + "").setMessage(msg).show();} catch (Exception e) {new AlertDialog.Builder(FullscreenActivity.this).setTitle("Error").setMessage(e.getMessage()).show();}

View Code

程序参考华位网盘[软件任务与测试]

转载于:https://www.cnblogs.com/wdfrog/p/3275281.html

asp.net hessian + android hessdroid相关推荐

  1. 使用ASP.NET做android的后台服务

    毕业设计的后台使用学过的C#语言来搭建好了,使用Sqlserver 2008作为系统的数据库,android端采用ksoap2-android.jar包进行连接.记录下搭建服务器及发布IIS. 1.搭 ...

  2. Android ScrollView嵌套ScrollView滚动的问题解决办法

    引用:http://mengsina.iteye.com/blog/1707464 http://fenglog.com/article.asp?id=449 Android ScrollView嵌套 ...

  3. 重启Android手机代码

    重启Android手机代码 作者:[tcconan] 来源:[13COM.NET收集整理] 浏览:[27] 评论:[0] 关键字: package com.test.reboot; import ja ...

  4. android开发每日汇总【2011-10-14】

    [url=http://www.buildapp.net/android/show.asp?id=32100]请问ADT是否开源? 从哪能下载到源码?[/url] [url=http://www.bu ...

  5. 使用win10自带IIS发布ASP.NET网站

    IIS发布ASP.NET网站 在学习Android的时候,由于没有学习使用JSP搭建网站后台,需要使用ASP.NET写一个网站后台程序来响应APP的网络请求.由于ASP.NET和Android中的lo ...

  6. android开发每日汇总【2011-10-04】

    [url=http://www.buildapp.net/android/show.asp?id=27700]请求服务器的问题?[/url] [url=http://www.buildapp.net/ ...

  7. 安卓Webview缓存网页数据(无网络正常显示)

    热度 1已有 52 次阅读2016-8-26 17:53 |个人分类:常见问题|系统分类:移动开发 一.需求经历 最近的项目是一个原生 +webview 显示的 APP,一开始的时候,网站那边要求我们 ...

  8. 典型的多层神经网络模型,神经网络多传感器融合

    1.多传感器信息融合和神经网络(RBF)是什么关系? 两者间不具有明显的关系,前者是一类需要解决的问题,即将处于不同层次或相同层次的传感器信息进行全局性或局部性的融合.(加权平均就是一种最简单的融合) ...

  9. 自学编程推荐的11个学习及刷题网站

    初学编程,很多人会选择先自学,那么这时候选择适合自己的学习平台是特别关键的,今天小优就给大家整理了11个学习及刷题网站. 一起来收藏起来! 第一类:课程学习类网站 1.菜鸟教程 菜鸟教程是 @Runo ...

最新文章

  1. JBPM使用assignHandler进行用户分派思路
  2. PAT:1053. Path of Equal Weight (30) AC
  3. leetcode 38. 外观数列 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下
  4. Asp.Net中替代Eval的两种方式
  5. 彻底理解正向代理和反向代理
  6. java代理的学习,通过类实现接口来实现代理。proxy来创建动态类,和InvocationHandler接口的实现,和工作原理。...
  7. oracle 性能优化 常用,Oracle數據庫常用性能優化
  8. Unity Animation 的使用
  9. 谷歌浏览器主题背景图片保存方法
  10. java定时器quartz表达式,quartz定时任务cron表达式
  11. 自动化测试——selenium(完结篇)
  12. 2023年软考时间流程安排:
  13. 北京理工大学汇编语言复习重点(可打印)
  14. 所有毕业生的论文都要查重吗?
  15. JS实现搜索功能页面(可搜索,无需数据库,无后端)
  16. win10打开word时候报错,应用程序无法正常启动:0xc0000142
  17. 国科大学习资料--最优化计算方法(王晓)--期末考试试卷3
  18. [Jzoj] 3461. 小麦亩产一千八
  19. 微星主板黑苹果_一次踩完两个坑:风冷 ITX + 十代黑苹果 = 桌底小钢炮
  20. 数据表分区策略及实现

热门文章

  1. Queue - 一种线程安全的FIFO实现
  2. web报表工具FineReport的公式编辑框的语法简介
  3. 摩擦力特点用计算机绘制出,AGC液压缸模拟工况摩擦力特性测试方法研究
  4. date对象加十分钟_js面向对象-这样学很轻松
  5. 450g吐司烘烤温度_这不可能是吐司!不,是的
  6. 软件工程导论 08章软件维护
  7. 计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
  8. CodeForces - 801C Voltage Keepsake 二分
  9. Android Studio 设置主题及字体
  10. Android编程中利用AudioTrack播放PCM数据在音频的最后出现重复回声现象的解决方案