HTTPURLConnection中接收流被截断的问题

在Java中使用HTTPURLConnection遇到了一个很诡异的问题,接收返回的数据流总是被截断,方法如下:
InputStream output = connection.getInputStream();
byte[] bytes = new byte[output.available()];
output.read(bytes);

在网上也查了很多资料,最后发现是因为数据流的返回是异步的,也就是说不能一次性把包都收完,比如按照如下方法:

ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int c;
while((c = output.read()) >= 0){
    buffer.write(c);
}
buffer.close();
byte[] bytes = buffer.toByteArray();

当然有时候也要处理GZIP解压问题,代码如下:

GZIPInputStream gstream = new GZIPInputStream(output);
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int c;
while((c = gstream.read()) >= 0){
    buffer.write(c);
}
buffer.close();
bytes = buffer.toByteArray();

你可能感兴趣的:(Java资料)