码迷,mamicode.com
首页 > 移动开发 > 详细

Android 数据传输之MessagePack使用

时间:2015-05-11 14:35:28      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

 介绍过什么是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.   
  19.         } catch (Exception e) {  
  20.             Log.e("HttpUtils", "连接服务器出错");  
  21.             e.printStackTrace();  
  22.         }  

 

 

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

 

    (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

 

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

Android 数据传输之MessagePack使用

标签:

原文地址:http://www.cnblogs.com/duanxz/p/4494420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!