因此,作为标题所暗示的,我想获得和用gunzip从HTTP请求字符串。
urlConn = url.openConnection();
int len = CONTENT_LENGTH
byte[] gbytes = new byte[len];
gbuffer = new GZIPInputStream(urlConn.getInputStream(), len);
System.out.println(gbuffer.read(gbytes)+"/"+len);
System.out.println(gbytes);
result = new String(gbytes, "UTF-8");
gbuffer.close();
System.out.println(result);
对于某些网址,它工作正常。 我得到这样的输出:
42/42
[B@96e8209
The entire 42 bytes of my data. Abcdefghij.
与他人,它给了我类似以下的输出:
22/77
[B@1d94882
The entire 77 bytes of
正如你所看到的,数据的首先是一些几个字节是非常相似的,如果不一样,所以他们不应该导致这些问题。 我真的似乎无法引脚下来。 增加CONTENT_LENGTH
没有帮助,和尺寸都比那些给我的问题更大和更小的数据流的正常工作。
编辑 :这个问题也没有原始数据用gzip压缩的内说谎,可可和Python都用gunzip它没有问题。
编辑 :解决。 包括最后的代码:
urlConn = url.openConnection();
int offset = 0, len = CONTENT_LENGTH
byte[] gbytes = new byte[len];
gbuffer = new GZIPInputStream(urlConn.getInputStream(), len);
while(offset < len)
{
offset += gbuffer.read(gbytes, offset, offset-len);
}
result = new String(gbytes, "UTF-8");
gbuffer.close();