Android:如何在改进响应中保留errorBody()?

时间:2018-03-29 13:55:45

标签: android retrofit

我想获取errorBody的错误消息,我通过调用errorBody()来完成。字符串()(尝试使用errorbody()。byteStream())。但无论如何,在阅读之后,响应错误实体的消息将为空。将字符串保存到静态变量不是一个选项,但项目需要在不同的场景中多次检查响应。我的问题是如何在不清除的情况下获取errorBody的消息?

1 个答案:

答案 0 :(得分:0)

属性ResponseBody

errorBody来自OkHttp。文档清楚地表明,您只能阅读一次。这是因为它是一个尚未存储在内存中的流 -

  

从源服务器到客户端应用程序的一次性流   与响应正文的原始字节。每个回应机构都是   由与Web服务器的活动连接支持。这强加了   对客户申请的义务和限制。

您只能调用.string()(或访问流一次的其他方法)。如果您需要多次访问该值,则必须在首次访问时保存该值,并在以后的代码中使用该缓存值。它不必是static变量,它可以是常规变量,但您负责将其传递给您的代码,就像您在多个地方使用的任何其他数据一样。