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)

[java] view plaincopy

  1. MessagePack msgPack = new MessagePack();
  2. byte[] outbytes = null;
  3. ByteArrayOutputStream out = new ByteArrayOutputStream();
  4. Packer packer = msgPack.createPacker(out);
  5. Map postData = new HashMap();
  6. postData.put("SId", data);
  7. try {
  8. packer.write(postData);
  9. outbytes = out.toByteArray();
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }

(4)handler中请求网络的方法:

[java] view plaincopy

  1. byte[]  result = null;
  2. HttpClient httpclient = new DefaultHttpClient();
  3. httpclient.getParams().setParameter(
  4. CoreConnectionPNames.CONNECTION_TIMEOUT, 10 * 1000);
  5. httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
  6. 10 * 1000);
  7. HttpPost httppost;
  8. httppost = new HttpPost(url);
  9. try {
  10. MultipartEntity mpEntity = new MultipartEntity();
  11. ByteArrayBody dataBody = new ByteArrayBody(outbytes, "memory");
  12. mpEntity.addPart(paramName, dataBody);
  13. httppost.setEntity(mpEntity);
  14. HttpResponse response = httpclient.execute(httppost);
  15. if (response.getStatusLine().getStatusCode() != 404) {
  16. result = EntityUtils.toByteArray(response.getEntity());
  17. }
  18. } catch (Exception e) {
  19. Log.e("HttpUtils", "连接服务器出错");
  20. e.printStackTrace();
  21. }

此时,请求二进制的数据至网络,并且响应到二进制的数据流

(5)剩下的步骤,将获取到的二进制数据使用msgpack- unpack方法就可以获取到自己想要获取相应的数据:

[java] view plaincopy

  1. Value a;
  2. try {
  3. a = (new MessagePack()).read(result);
  4. System.out.println("adf");
  5. } catch (IOException e) {
  6. e.printStackTrace();
  7. }

在数据传递中肯定还有较为复杂的数据结构的使用,再次只是简单的介绍了msgpack的使用方法,如果想深入了解还需要多多实践。

msgpack也有自己官方的wiki介绍:http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Java

如果有任何疑问一同研究进步!

时间: 2024-08-14 02:11:25

Android 数据传输之MessagePack使用的相关文章

android数据传输之Bundle和Parcel

1.区别(intent可以使用这两种方式传递数据给activity) Bundle用于基本数据传输 parcelable用于序列化自定义的对象,进行传输.特别注意:它写入数据的顺序必须与读出的数据的顺序一致. 2.好处 博客地址:http://zhouhongyu1989.blog.51cto.com/2931598/1407257

Android 数据传输要注意的地方

如果在使用Bundle 传输数据时报TransactionTooLargeException这种错误,说明你传输的数据过大,官网上说最大不要超过1M,超过了就会报这种错误,所以使用的时候大数据应该换种方式传递.

【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据传输二(引用数据类型)(附源码) 基于 Android NDK 的学习之旅-----数据传输(引用数据类型) 接着上篇文章继续讲.主要关于引用类型的数据传输,本文将介绍字符串传输和自定义对象的传输. 1.主要流程 1.  String 字符串传输 a)         上层定义一个native的方法

Android应用安全之数据传输安全

Android软件通常使用WIFI网络与服务器进行通信.WiFi并非总是可靠的,例如,开放式网络或弱加密网络中,接入者可以监听网络流量:攻击者可能 自己设置WIFI网络钓鱼.此外,在获得root权限后,还可以在Android系统中监听网络数据. 不加密地明文传输敏感数据 最危险的是直接使用HTTP协议登录账户或交换数据.例如,攻击者在自己设置的钓鱼网络中配置DNS服务器,将软件要连接的服务器域名解析至攻击者的另一台服务器在,这台服务器就可以获得用户登录信息,或者充当客户端与原服务器的中间人,转发

Android五天乐(第二天)Activity跳转与数据传输,Fragment

1 Activity的生命周期 activity在生命周期内共有运行,暂停,和停止三种状态.每次发生状态转换时,都有一个Activity方法将状态改变的消息通知给activity.activity的生命周期,状态及状态切换时系统调用的方法如下图所示. 2改变Activity状态的三种场景 改变Activity状态的场景有很多,这里举例三种比较典型的场景:按回退键,按下home键,翻转屏幕. 首先打开应用,通过对activity的各个方法设置log信息,可以看到activity对象一次调用了onC

Android终端与服务器数据传输解决方案

Android终端与服务器数据传输解决方案 Android终端三种与服务器传输方式:   Socket传输 WebService传输 Post/Get获取数据方式 网络实现条件 端口:指定 协议:TCP,UDP 端口:指定 协议:SOAP 端口:指定 协议:http 使用范围 数据量大,格式简单,且实时性要求高的传输 标准的Web服务接口,接口固定,各应用程序可复用 http形式,接口固定,WEB可复用 传输优缺点 速度快,数据量小 速度一般,数据量大 速度一般,数据量一般 传输格式 自定义 X

Android基于WIFI实现电脑和手机间数据传输的技术方案研究

Android手机和电脑间基于wifi进行数据传输,从技术上讲,主要有两种方案: 一种是通过ftp协议实现,Android手机作为数据传输过程中的ftp服务器: 一种是通过http协议实现.Android手机作为数据传输过程中的http服务器. 所以,技术实现的难点在于我们的app怎么实现ftp或者http服务器的功能,当然可以自己先阅读ftp协议或者http协议,根据规范自己实现一个,如果你时间充裕.技术过关的话:另一种方法是寻求开源社区的帮助,本文重点通过分析市场上已有的几款实现wifi数据

Android WifiDisplay分析三:RTSP交互以及数据传输

前面我们分析到WifiDisplaySource会调用ANetworkSession的接口去创建一个socket,并在这个socket上监听是否有客户端的连接请求.先来看看Wifi Display规范的一些流程图: 从之前的一篇文章中,当ANetworkSession创建好RTSP的listen socket后,就会把它加入到selelct中等待对方的连接,那我们首先来看ANetworkSession的threadLoop方法: [java] view plaincopy void ANetwo

android socket 网络数据传输

原文:http://blog.sina.com.cn/s/blog_726233070100nqw7.html 讲解一下android socket ,包括获取数据包,拆包,解包的过程. 有时候应用程序需要从网络上收发一些数据,软件的底层是用socket实习的,android操作系统的内核是linux,开发语言是java,刚好数据存储结构和以c构建的服务器大小头是相反的,所以取到c做的服务器数据时,需要转换一下数据的大小头.这里也一并讲解. 首先是socket //实例化一个socket(指定服