C#服务端Webservice压缩dataset,客户端JAVA里字符串解缩用GZIP要怎么实现?
C#服务端Webservice压缩dataset,客户端JAVA里字符串解缩用GZIP要怎么实现?
/// <summary>
/// 获取数据压缩后的字节码
/// </summary>
public static byte[] Compress(DataSet dt)
{
try
{
// 声明MemoryStream
MemoryStream ms = new MemoryStream();
// 写入DataSet中的数据到ms中
dt.WriteXml(ms, XmlWriteMode.WriteSchema);
// ms转换为数组序列
byte[] bsrc = ms.ToArray();
//关闭ms并释放资源
ms.Close();
ms.Dispose();
ms = new MemoryStream();
ms.Position = 0;
// 压缩数组序列中的数据
GZipStream zipStream = new GZipStream(ms, CompressionMode.Compress, true);
zipStream.Write(bsrc, 0, bsrc.Length);
zipStream.Close();
zipStream.Dispose();
return ms.ToArray();
}
catch
{
return null;
}
}
手机客户端我用java解压Gzip 一直报错呀03-19 14:41:53.280: W/System.err(13739): java.io.IOException: unknown format (magic number 3f3c) GZIPInputStream gzin = new GZIPInputStream(i); 这句话一直报错,难道解压不了么
以下是我的客户端代码
//建立字节数组输入流
ByteArrayInputStream i = new ByteArrayInputStream(buf);
//建立gzip解压输入流
GZIPInputStream gzin = new GZIPInputStream(i);
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[256];
int n;
while ((n = gzin.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
String txt = out.toString("utf-8");
SAXParser xmlParser = SAXParserFactory.newInstance().newSAXParser();
xmlParser.parse(txt, mXmlHandler);
Logger.log("txt = " + txt);
return retProperties;