在try-body中从响应Reform调用.body()是否可能返回null



我有如下简单的代码片段:

Sub sub = null;
try {
Response<Sub> response = MyRestApi.getInstance().getSub().execute();
sub = response.body(); // Does variable response is always non null?
} catch (IOException e) {
e.printStackTrace();
}
//
// ... further operations on sub
// 

我想知道的是,我可以安全地调用try主体中response上的.body()吗?

我试图通过在Android Studio中调用CTRL-Q来预览我的方法信息.getSub(),但我得到了唯一的行

Inferred annotations: @org.jetbrains.annotations.NotNull

我相信这应该足以说服我,但我必须询问并100%确定。

即使请求成功,它也可能为null,如w3c:中所述

"响应数据后面可能会有其他信息,格式为MIME邮件正文。数据的重要性取决于状态密码

用于数据的内容类型可以是客户已表达其接受的能力,或文本/纯文本,或text/html。也就是说,人们总是可以假设客户端可以处理text/plain和text/html。">

引用:https://www.w3.org/Protocols/HTTP/Response.html

在改装中,主体方法被定义为可为空的

@Nullable public T body((成功响应。

https://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html

如果响应不成功,它可能为null。

最新更新