Android 数据传输之MessagePack使用
介绍过什么是MessagePack之后,就进行Android与MessagePack的使用。
在MessagePack的官网上介绍MessagePack与Java结合使用的都是使用Maven作为JAR管理进行,由于不熟悉Maven,配置起来还有熟悉起来确实感觉很不方便,(如果想继续熟悉使用maven的朋友,推荐一个maven的地址:http://mvnrepository.com/)
我想整理一下,我从请求到响应在Android开发中使用MessagePack的过程:
(1)想要使用MessagePack需要使用的四个包,通过推荐的maven地址查询需要使用msgpack地址:http://mvnrepository.com/artifact/org.msgpack/msgpack/0.6.7, 对于熟悉maven的朋友说可以发现下图:
使用msgpack的同时会依赖了另外三个jar,其中只有junit是可以下载的jar,其他的json-simple,javassist,msgpack都需要自行打包,我已经打包好,分别是版本如下:
jar下载地址:http://download.csdn.net/detail/yddido/5725799
(2)介绍一下自己平时开发中对网络请求的类的封装:
(3)开始使用msgpack--request请求参数:(将请求数据pack)
- MessagePack msgPack = new MessagePack();
- byte[] outbytes = null;
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- Packer packer = msgPack.createPacker(out);
- Map postData = new HashMap();
- postData.put("SId", data);
- try {
- packer.write(postData);
- outbytes = out.toByteArray();
- } catch (IOException e) {
- e.printStackTrace();
- }
(4)handler中请求网络的方法:
- byte[] result = null;
- HttpClient httpclient = new DefaultHttpClient();
- httpclient.getParams().setParameter(
- CoreConnectionPNames.CONNECTION_TIMEOUT, 10 * 1000);
- httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
- 10 * 1000);
- HttpPost httppost;
- httppost = new HttpPost(url);
- try {
- MultipartEntity mpEntity = new MultipartEntity();
- ByteArrayBody dataBody = new ByteArrayBody(outbytes, "memory");
- mpEntity.addPart(paramName, dataBody);
- httppost.setEntity(mpEntity);
- HttpResponse response = httpclient.execute(httppost);
- if (response.getStatusLine().getStatusCode() != 404) {
- result = EntityUtils.toByteArray(response.getEntity());
- }
- } catch (Exception e) {
- Log.e("HttpUtils", "连接服务器出错");
- e.printStackTrace();
- }
此时,请求二进制的数据至网络,并且响应到二进制的数据流
(5)剩下的步骤,将获取到的二进制数据使用msgpack- unpack方法就可以获取到自己想要获取相应的数据:
- Value a;
- try {
- a = (new MessagePack()).read(result);
- System.out.println("adf");
- } catch (IOException e) {
- e.printStackTrace();
- }
在数据传递中肯定还有较为复杂的数据结构的使用,再次只是简单的介绍了msgpack的使用方法,如果想深入了解还需要多多实践。
msgpack也有自己官方的wiki介绍:http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Java
如果有任何疑问一同研究进步!
Android 数据传输之MessagePack使用的更多相关文章
- MessagePack详解
版权声明:分享是一种品质,开源是一种精神. https://blog.csdn.net/wangmx1993328/article/details/84477073 MessagePack Intro ...
- 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...
- Android基于WIFI实现电脑和手机间数据传输的技术方案研究
Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案: 一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器: 一种是通过http协议实现.Andro ...
- Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
适用条件: 1.可以上网的安卓系统2.2以上的智能手机,或有便携式wifi功能的安卓智能手机 2.有无线网卡的笔记本电脑或台式机(特别是XP系统) 测试手机:中兴U930 电脑:华硕K50系列笔记本 ...
- Android应用安全之数据传输安全
Android软件通常使用WIFI网络与服务器进行通信.WiFi并非总是可靠的,例如,开放式网络或弱加密网络中,接入者可以监听网络流量:攻击者可能 自己设置WIFI网络钓鱼.此外,在获得root权限后 ...
- 【Android开发日记】之入门篇(十二)——Android组件间的数据传输
组件我们有了,那么我们缺少一个组件之间传递信息的渠道.利用Intent做载体,这是一个王道的做法.还有呢,可以利用文件系统来做数据共享.也可以使用Application设置全局数据,利用组件来进行控制 ...
- Android终端与服务器数据传输解决方案
Android终端与服务器数据传输解决方案 Android终端三种与服务器传输方式: Socket传输 WebService传输 Post/Get获取数据方式 网络实现条件 端口:指定 协议:TC ...
- Android 蓝牙技术 实现终端间数据传输
蓝牙技术在智能硬件方面有很多用武之地,今天我就为大家分享一下蓝牙技术在Android系统下的使用方法技巧.蓝牙是一种短距离的无线通信技术标准,蓝牙协议分为4层,即核心协议层.电缆替代协议层.电话控制协 ...
- StyleAI厚积薄发: Android网络图片数据传输
在StyleAI上厚积了这么长时间,憋了这么久,本来想憋个更大的,不过还是薄发一次的好. 三.直接使用别人的工程 文章:Android学习之客户端上传图片到服务器 下载地址:https://downl ...
随机推荐
- Lua中cJson的读写
这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高10~20倍.并且Lua Json完全支持UTF-8,无需以来其他非Lua/LuaJit相关包. 环境安装 ...
- sql之事务和并发
1.Transaction(事务)是什么: 事务是作为单一工作单元而执行的一系列操作.包括增删查改. 2.事务的种类: 事务分为显示事务和隐式事务: 隐式事务:就是平常我们使用每一条sql 语句就是一 ...
- 2328: [HNOI2011]赛车游戏 - BZOJ
先把一定要减的费用先减掉,就是b*s*len(上坡路),下坡路就设一个初速度,使耗油为0,如果没油了,就无法到达 然后考虑加速 对于长度为len的路,增加v的速度需要len*a*v的油,与len成正比 ...
- zepto点击事件兼容pc和mobile
判断pc还是mobile,重写click事件 var CLICK='click'; (function browserRedirect() { var sUserAgent = navigator.u ...
- js添加创建节点和合并节点
var _div = document.createElement("div"), //创建节点 txt1 = document.createTextNode("123& ...
- js验证码倒计时
var wait=59; function time(){ if(wait >= 0){ $("#buttons").val("" + wait + &q ...
- jquery.dragsort实现列表拖曳、排序
在一次工作中需要将功能模块实现拖曳并且排序,并且将排序结果保存到数据库,用户下次登录后直接读取数据库排序信息进行显示.LZ找了好多插件,最后发现 jquery.dragsort 这款插件是最好使用的, ...
- jquery判断对象是否获得焦点
var isFocus=$("#tRow").is(":focus"); if(true==isFocus){ alert("focus") ...
- 关于hibernate中双向外键关联one-to-one的property-ref=的问题(转)
大家都知道hibernate中的one-to-one映射主要有两种策略,(1)一对一主键关联(单向和双向).(2)一对一外键映射(单项和双向).本文主要讲解一下,一对一外键映射中的双向问题,在此前先通 ...
- (转)基于即时通信和LBS技术的位置感知服务(二):XMPP协议总结以及开源解决方案
在<基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案>一文中,提到尝试使用XMPP协议来实现即时通信.本文将对XMPP协议框架以及相关的C/S架构进行介绍,协议的底层实现不 ...