Java 解压缩gzip http响应
各位java开发人员好。我收到一个标题和正文如下的响应,但当我尝试使用下面的代码解压缩它时,它失败了,出现了以下异常: java.io.IOException: Not in GZIP format 请告知 谢谢Java 解压缩gzip http响应,java,gzip,Java,Gzip,各位java开发人员好。我收到一个标题和正文如下的响应,但当我尝试使用下面的代码解压缩它时,它失败了,出现了以下异常: java.io.IOException: Not in GZIP format 请告知 谢谢 PradeepMIME头不是GZIP格式,而是纯文本。在解压流之前,必须先阅读这些内容 还有,为什么不直接使用这个: InputStream in = sock.getInputStream(); readHeader(in); InputStream zin = new GZIPIn
PradeepMIME头不是GZIP格式,而是纯文本。在解压流之前,必须先阅读这些内容 还有,为什么不直接使用这个:
InputStream in = sock.getInputStream();
readHeader(in);
InputStream zin = new GZIPInputStream(in);
所有这些都有图书馆。例如,您可以使用它,也可以阅读它的开源代码来了解它的功能。至少,读一读我的第二个B辩论的答案 只有正文(RFC中的响应正文)被压缩,因此您只需要解压缩
\r\n\r\n
之后的部分
一般来说,你可以用这两个CRLF将响应减半,只对后半部分进行解压缩。你能告诉我你读标题是什么意思吗?我的意思是,当你得到一个文件时,你会得到一个标题,上面写着“Content-type:text/html”,其中包含纯文本格式的元数据。每个元数据元素由一个换行符分隔,整个头以两个换行符结束,然后数据开始。什么是袜子?如果它是一个套接字,那么您应该知道头和其他一些东西不是gzip的。只有响应主体是。
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);
}
InputStream in = sock.getInputStream();
readHeader(in);
InputStream zin = new GZIPInputStream(in);