org.apache.http.HttpResponse 获取entry多次解决方案
时间: 2023-10-03 17:03:57 浏览: 216
当使用`org.apache.http.HttpResponse`对象的`getEntity()`方法获取返回的响应内容时,如果多次调用该方法,会抛出"Content has been consumed"异常,提示响应内容已经被消耗过了。
解决这个问题的方法是,在获取响应内容之后,将其保存下来,避免多次获取。代码示例:
```
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
// 只在第一次获取响应内容时将其保存下来
if (entity != null && !entity.isRepeatable()) {
entity = new BufferedHttpEntity(entity);
response.setEntity(entity);
}
InputStream inputStream = entity.getContent();
try {
// 读取流中的数据
} finally {
inputStream.close();
}
```
这样,在第一次获取响应内容时,将其保存下来,后续再次获取时直接使用保存好的内容即可,避免了"Content has been consumed"异常的发生。需要注意的是,在保存响应内容时,需要判断其是否可重复,如果不可重复,则需要将其包装成可重复的`BufferedHttpEntity`对象再保存,否则无法多次读取响应内容。
阅读全文