解压缩一个gzip压缩响应

Bil*_*ill 8 java gzip

你好java开发人员.我收到带有标题和正文的响应,如下所示,但是当我尝试使用下面的代码解压缩时,它会因以下异常而失败:

java.io.IOException: Not in GZIP format

响应:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Encoding: gzip
Server: Jetty(6.1.x)
?       ?UMs¢0?=7?ép??6-C?$?g???±???zS????$FÆ?÷?G???8N??Cf°?????o?æJÄ+`:?2
?»??S?L&???_)U?|?%ûíyk_à\,æ] h???x??o?4?ù\#MAHG??(Q¶???Ç??ô[7Fí¼???I%??Z??¿?F;x|?o/A?????????U??0?æ?|J%à{(éUmHµ %?l??Ç9??Ç???5?yë~???íi???
?û???????RtGqè?ójWë???j05???|>?º??j?2?|= ÷²
eY\?P?#5wÑqc????½?t£6q???4?t??=7æƒ???|?;?)?÷??^?{v????>6ä?|

码:

byte[] b=  IOUtils.toByteArray(sock.getInputStream());

ByteArrayInputStream bais = new ByteArrayInputStream(b);
GZIPInputStream gzis = new GZIPInputStream(bais);
InputStreamReader reader = new InputStreamReader(gzis);
BufferedReader in = new BufferedReader(reader);

String readed;
while ((readed = in.readLine()) != null) {
    System.out.println("read:  "+readed);
}
Run Code Online (Sandbox Code Playgroud)

请指教.

谢谢,

普拉迪普

Leo*_*zen 2

MIME 标头不是 GZIP 格式,而是纯文本格式。在解压缩流之前,您必须先阅读该内容。

另外,为什么不直接使用这个:

InputStream in = sock.getInputStream();
readHeader(in);
InputStream zin = new GZIPInputStream(in);
Run Code Online (Sandbox Code Playgroud)