当前位置: 首页 > 知识库问答 >
问题:

获取内容和状态代码从Http响应[复制]

党建义
2023-03-14

我正在使用apache的HttpClient(通过Fluent API)。当我获得响应对象时,我首先执行以下操作:

response.returnResponse().getStatusLine().getStatusCode()

如果状态代码为4xx或5xx,我将抛出异常,或者返回内容:

response.returnContent().asBytes();

response这里是类型为response的对象。但当我运行此程序时,我得到:

java.lang.IllegalStateException: Response content has been already consumed.

我怎样才能避开这件事?

共有1个答案

颛孙国源
2023-03-14

两个响应#回复响应()响应#回复内容()强制读取HttpContentInputStream。由于您不能两次读取InputStream,库已经放置了标志和一个检查来断言InputStream没有被使用。

你不能绕过这个。您要做的是获取基础的HttpContent对象,并以字节的形式获取状态代码和主体。

HttpResponse httpResponse = response.returnResponse();
httpResponse.getStatusLine().getStatusCode();
byte[] bytes = EntityUtils.toByteArray(httpResponse.getEntity());
 类似资料:
  • 如何从的结果中获取HTTP状态?

  • 问题内容: 调用JAX-WS端点时,如何获取HTTP响应代码? 在下面的示例代码中,在调用Web服务时可能会引发Exception,例如或。 在这种情况下,如何从HTTP响应中获取HTTP状态代码? 问题答案: 完成@Praveen答案后,您必须将变成原始值,然后从上下文中获取值。 如果您在托管的Web服务客户端中发生异常,请不要忘记将事务标记为回滚。

  • 我希望检索HTTP响应状态代码(例如,400、401、403、503等),以防请求失败(理想情况下也是成功)。在这段代码中,我使用HTTP Basic执行用户身份验证,并希望能够在用户错误键入密码时向用户发送身份验证失败的消息。 不幸的是,产生的错误似乎并不表示实际收到了HTTP状态代码409: 此外,在发生错误时检索HTTP正文会很好,因为我的服务器端将在那里放置错误的文本描述。 问题 是否可以

  • 我使用curl获取http头以查找http状态代码并返回响应。我使用以下命令获取http头

  • 我想知道在REST API中应该如何响应。 有效示例: 以上是一个有效的请求,当前我的HTTP状态为200,有一个JSON响应

  • 在改版1.9中,RetrofitError仍然存在,我们可以通过以下操作获得状态: 您如何使用RXJava在Registfit2.0中做到这一点?