Java 获得;溪流已关闭”;请求相当长的响应时发生IOException

Java 获得;溪流已关闭”;请求相当长的响应时发生IOException,java,android,gzip,ioexception,Java,Android,Gzip,Ioexception,更新:我知道无论我尝试接收的数据有多少,都会收到相同的错误。任何能帮助我解决这个问题的想法和建议都将不胜感激 我正在尝试从web服务中的成员列表检索用户ID列表。不幸的是,在只收到几个成员后,我得到了一个“StreamisClosed”IOException。这是我第一次尝试检索这么大的流(我们说的是+100个成员),也是我第一次收到这个错误 有关错误: 发生异常的代码: private void setupRequest(OAuthRequest request) { reques

更新:我知道无论我尝试接收的数据有多少,都会收到相同的错误。任何能帮助我解决这个问题的想法和建议都将不胜感激

我正在尝试从web服务中的成员列表检索用户ID列表。不幸的是,在只收到几个成员后,我得到了一个“StreamisClosed”IOException。这是我第一次尝试检索这么大的流(我们说的是+100个成员),也是我第一次收到这个错误

有关错误:

发生异常的代码:

private void setupRequest(OAuthRequest request) 
{
    request.setConnectionKeepAlive(true);
    request.setConnectTimeout(60, TimeUnit.SECONDS);
    request.addHeader("accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*");
//  request.addHeader("accept-encoding", "gzip, deflate");
    request.addHeader("user-agent", m_sIDENTIFIER);
}

private String readStream(InputStream stream) throws IOException 
{
    String sReturn = "";
    if(stream != null)
    {
        final BufferedReader bufReader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
        final StringBuffer s2 = new StringBuffer();
        String line = bufReader.readLine();
        if(line != null)
        {
            s2.append(line);
            while((line = bufReader.readLine()) != null)
            {
                s2.append('\n');
                s2.append(line);
            }
        }
        bufReader.close();
        sReturn = s2.toString();
    }
    return sReturn;
}

private InputStream getResultStream(Response response) throws IOException
{
    InputStream resultStream = null;
    if(response != null)
    {
        String encoding = response.getHeader("Content-Encoding");
        if((encoding != null) && (encoding.equalsIgnoreCase("gzip")))
        {
            Log.d("Stream :", "Read GZIP");

        } else if ((encoding != null) && encoding.equalsIgnoreCase("deflate")) {
            resultStream = new InflaterInputStream(response.getStream(), new Inflater(true));
            Log.d("Stream :", "Read Deflated.");
        } else {
            resultStream = response.getStream();
            Log.d("Stream :","Read Normal.");
        }       
    }

    return resultStream;
}

知道是什么导致了这个问题吗?我收到的数据量有限制吗?

我想你的连接超时了

request.setConnectTimeout(60, TimeUnit.SECONDS);

增加秒数

我认为远程服务器关闭了连接(由于错误?)。从您的日志中,我可以看到响应是gzip。你的成功回答也被忽略了吗?

没有。我从来没有接受过gzip编码。我认为这可能是问题所在,但在检索到所有数据之前,流仍然会关闭。