1.Android端
Base64类:
public class Base64 { public static final int CRLF = 4; public static final int DEFAULT = 0; public static final int NO_CLOSE = 16; public static final int NO_PADDING = 1; public static final int NO_WRAP = 2; public static final int URL_SAFE = 8; Base64() { throw new RuntimeException("Stub!"); } public static byte[] decode(String str, int flags) { throw new RuntimeException("Stub!"); } public static byte[] decode(byte[] input, int flags) { throw new RuntimeException("Stub!"); } public static byte[] decode(byte[] input, int offset, int len, int flags) { throw new RuntimeException("Stub!"); } public static String encodeToString(byte[] input, int flags) { throw new RuntimeException("Stub!"); } public static String encodeToString(byte[] input, int offset, int len, int flags) { throw new RuntimeException("Stub!"); } public static byte[] encode(byte[] input, int flags) { throw new RuntimeException("Stub!"); } public static byte[] encode(byte[] input, int offset, int len, int flags) { throw new RuntimeException("Stub!"); } }
GzipUtil类:
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import android.util.Base64; /** * GZIP压缩 * * @author huy * @version 创建时间:2013-3-9 上午10:08:40 */ public class GzipUtil { /** * 字符串进行Gzip压缩 * * @param primStr * @return String * @Title: gzip */ public static String gzip(String primStr) { if (primStr == null || primStr.length() == 0) { return primStr; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = null; try { gzip = new GZIPOutputStream(out); gzip.write(primStr.getBytes("UTF-8")); } catch (IOException e) { e.printStackTrace(); } finally { if (gzip != null) { try { gzip.close(); } catch (IOException e) { e.printStackTrace(); } } } return Base64.encodeToString(out.toByteArray(), Base64.DEFAULT); } /** * <p> * Description:使用gzip进行解压缩 * </p> * * @param compressedStr * @return */ public static String gunzip(String compressedStr) { if (compressedStr == null) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = null; GZIPInputStream ginzip = null; byte[] compressed = null; String decompressed = null; try { compressed = Base64.decode(compressedStr, Base64.DEFAULT); in = new ByteArrayInputStream(compressed); ginzip = new GZIPInputStream(in); byte[] buffer = new byte[1024]; int offset = -1; while ((offset = ginzip.read(buffer)) != -1) { out.write(buffer, 0, offset); } decompressed = new String(out.toByteArray(), "UTF-8"); } catch (IOException e) { e.printStackTrace(); } finally { if (ginzip != null) { try { ginzip.close(); } catch (IOException e) { } } if (in != null) { try { in.close(); } catch (IOException e) { } } if (out != null) { try { out.close(); } catch (IOException e) { } } } return decompressed; } }
2.服务端(JAVA)
GzipUtil类:
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * * @author wenqi5 * */ public class GzipUtil { public static final String GZIP_ENCODE_UTF_8 = "UTF-8"; /** * 字符串进行Gzip压缩 * @Title: gzip * @param primStr * @return String */ public static String gzip(String primStr) { if (primStr == null || primStr.length() == 0) { return primStr; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip = null; try { gzip = new GZIPOutputStream(out); gzip.write(primStr.getBytes(GZIP_ENCODE_UTF_8)); } catch (IOException e) { e.printStackTrace(); } finally { if (gzip != null) { try { gzip.close(); } catch (IOException e) { e.printStackTrace(); } } } return new BASE64Encoder().encode(out.toByteArray()); } /** * <p> * Description:使用gzip进行解压缩 * </p> * * @param compressedStr * @return */ public static String gunzip(String compressedStr) { if (compressedStr == null) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayInputStream in = null; GZIPInputStream ginzip = null; byte[] compressed = null; String decompressed = null; try { BASE64Decoder decoder = new BASE64Decoder(); compressed = decoder.decodeBuffer(compressedStr); in = new ByteArrayInputStream(compressed); ginzip = new GZIPInputStream(in); byte[] buffer = new byte[1024]; int offset = -1; while ((offset = ginzip.read(buffer)) != -1) { out.write(buffer, 0, offset); } decompressed = new String(out.toByteArray(), GZIP_ENCODE_UTF_8); } catch (IOException e) { e.printStackTrace(); } finally { if (ginzip != null) { try { ginzip.close(); } catch (IOException e) { } } if (in != null) { try { in.close(); } catch (IOException e) { } } if (out != null) { try { out.close(); } catch (IOException e) { } } } return decompressed; } }
Android端用GzipUtil.java加解密可以用服务端(JAVA)的相应的解加密