求助如何压缩数据后在网络上传输 项目是个soa系统,基于mule架构说白了就是一个webservice,有人调我们的方法,发现太慢了,原因在于返回的entity数组的size实在太大,大量时间在网络传输上,因此他们想让我们传输之前压缩这个entity数组,压完了再传输,传到client端时再解压出来。求思路,多谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://download.csdn.net/source/202886http://topic.csdn.net/u/20081226/18/a84d5a60-d3da-4b38-b1e2-82cfa7d5ca95.html 用base64编码,用zip压缩之后传输就会少很多 直接用java.util.zip包下面的类,压缩一下传输就好了。客户端收到再解压。 前一段时间刚做了个类似的东西,但手头只有client端的代码,可以给你参考一下。服务端的自己按这个思路写写就好了。关键你要了解java.util.zipimport java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.util.zip.ZipEntry;import java.util.zip.ZipInputStream;public class ZipUtil { public static String unzip(byte[] zippedByte){ final int BUFFER = 1024; ByteArrayOutputStream baos=new ByteArrayOutputStream(); String result=""; try { ZipInputStream zis = new ZipInputStream (new ByteArrayInputStream(zippedByte)); ZipEntry entry; if ((entry = zis.getNextEntry()) != null) { System.out.println("Extracting: " + entry); int count; byte data[]=new byte[BUFFER]; while ((count = zis.read(data))!= -1) { baos.write(data, 0, count); } } zis.close(); result=new String(baos.toByteArray()); baos.close(); } catch (Exception e) { e.printStackTrace(); } return result; }} 我不是要压缩的代码是这样的,接口不变,返回的还是entity数组,只是在传输的时候压缩,想了半天最好用代理模式 hibernate+mysql操作 Unable to instantiate default tuplizer这个错误 struts运行时报错 一个hibernate 多对多应用上的问题 SH 图片上传的问题 为什么无法生成/index.do呢? struts2中为何获得不料struts1.2中的session? Spring整合servlet时遇到的问题 session bean 问题 最简单最慢的java居然有这么多的人这么热心,可悲。j2ee算个球 firefox为什么无法正常显示我的jsp页面 怎么写这条查询语句
http://topic.csdn.net/u/20081226/18/a84d5a60-d3da-4b38-b1e2-82cfa7d5ca95.html
客户端收到再解压。
服务端的自己按这个思路写写就好了。
关键你要了解java.util.zip
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;public class ZipUtil { public static String unzip(byte[] zippedByte){
final int BUFFER = 1024;
ByteArrayOutputStream baos=new ByteArrayOutputStream();
String result="";
try {
ZipInputStream zis = new ZipInputStream (new ByteArrayInputStream(zippedByte));
ZipEntry entry;
if ((entry = zis.getNextEntry()) != null) {
System.out.println("Extracting: " + entry);
int count;
byte data[]=new byte[BUFFER];
while ((count = zis.read(data))!= -1) {
baos.write(data, 0, count);
}
}
zis.close();
result=new String(baos.toByteArray());
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}