【发布时间】:2015-07-16 20:08:57
【问题描述】:
我有一个从网络服务器收到的 HttpEntity。如果我用 getContentLength() 检查 HttpEntity,它显示的值 > 0。所以似乎有内容。我运行 getContent() 以获取 InputStream,并在该 InputStream 上运行 read() 以获取内容。在第一次 read() 操作时,它会抛出一个 IO 异常,表明流已关闭“尝试在已关闭的流上读取。”。
我的代码是:
HttpEntity myEntity = myResponse.getEntity();
InputStream inputStream = myEntity.getContent();
inputStream.read();
所以我没有在那个流上调用 close()。我不能排除 HttpEntity 有问题,在我看到的调试器中查看 myEntity(不知道这是否有帮助):
is1=EofSensorInputStream
eofWatcher=BasicManagedEntity
selfClosed=true
wrappedStream=null
InputStream 上的 getContentLength() 显示的值与 HttpEntity 上的值相同。
我不知道从哪里开始寻找解决问题的方法。我可以通过什么检查来发现问题?
【问题讨论】:
-
您的服务器是否有可能发送的是标头而不是响应的正文?
-
也许吧。但是我怎样才能知道呢?我无权访问服务器。 contentLength() 是否包含标头而 getContent() 不包含?
-
我认为内容长度是指标题,但它可能没有收到整个正文。检查有点困难。尝试通过 TCP 套接字发送相同的 HTTP 请求。
-
春天可能已经“已阅读”
标签: java android httpentity