我正在使用apache的HttpClient(通过Fluent API)。当我收到响应对象时,我首先这样做:
response.returnResponse().getStatusLine().getStatusCode()
如果状态代码是4xx或5xx,我会抛出异常,或者我返回内容:
response.returnContent().asBytes();
这里的response
是Response
类型的对象。但是当我运行这个时,我得到了:
java.lang.IllegalStateException: Response content has been already consumed.
我怎样才能解决这个问题?
答案 0 :(得分:13)
Response#returnResponse()
和Response#returnContent()
都强制要求HttpResponse
InputStream
。由于您无法读取InputStream
两次,因此库已放置标记并检查以确定InputStream
尚未消耗。
你没有解决这个问题。你所做的是获取基础HttpResponse
对象,并将状态代码和正文作为字节。
HttpResponse httpResponse = response.returnResponse();
httpResponse.getStatusLine().getStatusCode();
byte[] bytes = EntityUtils.toByteArray(httpResponse.getEntity());