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 ...
随机推荐
- dnf的动画脚本研究
. 1.0x00 : 帧数 int16 2.0x02 : 总为1(?) int16 3.0x04 : 资源文件名长度 int32 4.长度+1 : 0,1(未知用 ...
- 南京邮电大学CTF隐写术部分Writeup
女神 听说这是女神的私房照,里面藏着flag哦 http://115.28.150.176/misc1.jpg 这个链接居然打不开,摔!万念俱灰!主办方可否给力点! P.S.为了方便日后学习,暂时列下 ...
- 微信支付-b
微信支付 APP端开发步骤(传送门):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5 1.首先下载最新的微信支付的SDK包 ...
- C# DataTable
http://www.cnblogs.com/xun126/archive/2010/12/30/1921557.html http://msdn.microsoft.com/zh-cn/librar ...
- Extjs-4.2.1(一)——编辑 hello word
前言:在搭建好环境后,就可以利用Extjs进行开发了. 一.在项目中拷贝相关的Extjs文件,如下图: 注意:不需要整个Ext开发包全部导入,这样很容易造成eclipse卡死,因为eclipse会自动 ...
- Struts2自定义拦截器实例—登陆权限验证
版本:struts2.1.6 此实例实现功能:用户需要指定用户名登陆,登陆成功进入相应页面执行操作,否则返回到登陆页面进行登陆,当直接访问操作页面(登陆后才能访问的页面)时则不允许,须返回登陆页面. ...
- uva 10105
数学 杨辉三角 多项式系数 #include <cstdio> int f[13] = {1}; void init() { for (int i = 1; i < 13; i+ ...
- 项目图片上传存储的目录部分代码思路Calendar类获取年月日
在项目中将产品图片全部放置在一个文件夹下面的话,如果图片很多的话,加载速度会减慢,可以按照文件夹按年,月,日来分开存放,图片文件名字取系统时间long类型加上5位随机数字码避免重复. Calendar ...
- POJ-1088 滑雪 (包含部分自用测试数据)
这题最简单的想法是深搜+记录,由于数据量比较小.这么做可以AC.如果在h大的情况下这种递归方法总会有一些问题. 如果转换一下,这个可以使用递推来解决,先对高度进行由低到高的排序,然后顺序对这些高度计算 ...
- grep正则表达式后面的单引号和双引号的区别
单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换:双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容! 一般常量用单引号' ...