Java 为什么DataInputStream.Ready(…)挂起?

Java 为什么DataInputStream.Ready(…)挂起?,java,http,stream,Java,Http,Stream,我很难理解我的申请出了什么问题。下面显示了在第一次调用时成功执行的代码(之前的HttpResponse,然后在第二次调用时,挂起在dataInputStream.readFully(…)行 doSomething(HttpResponse response) { HttpEntity responseBody = response.getEntity(); long len = responseBody.getContentLength(); byte[] payload

我很难理解我的申请出了什么问题。下面显示了在第一次调用时成功执行的代码(之前的
HttpResponse
,然后在第二次调用时,挂起在
dataInputStream.readFully(…)

doSomething(HttpResponse response) {
    HttpEntity responseBody = response.getEntity();
    long len = responseBody.getContentLength();
    byte[] payload = new byte[(int)len]; // <-- I've confirmed this is the correct length

    DataInputStream d = null;
    try {
        InputStream bais = responseBody.getContent();
        d = new DataInputStream(bais); 
        d.readFully(payload); // <-- *** HANGS HERE! ***

        EntityUtils.consume(responseBody);
        ...
    } finally {
        if (d != null) {
            IOUtils.closeQuietly(d);
        }
    }
}
doSomething(HttpResponse响应){
HttpEntity responseBody=response.getEntity();
long len=responseBody.getContentLength();

字节[]有效载荷=新字节[(int)len];//也可以关闭
输入流BAI
?以确认:
响应
与第二轮不同?基本http实体是不可重复的。@dhke是的,我正在更新以确认发生了什么…待机。它在构造函数处不挂起。它挂起尝试在
中以可读方式填充缓冲区()
@MarkKeen我不明白为什么。他知道这个输入流的大小。