我正在使用 okhttp3,我正在尝试获取这样的响应 errorBody:
ResponseBody errorBody = response.errorBody();
Android Studio 给我以下警告:
'ResponseBody' used without 'try'-with-resources statement
如何正确获取
errorBody
?
来自 okhhtp3 的文档:
响应体必须关闭 每个响应主体都由有限的资源支持,如套接字(实时网络响应)或开放式 文件(用于缓存响应)。未能关闭响应主体将 泄漏资源并可能最终导致应用程序变慢 或崩溃。
来自 Oracle 的文档:
try-with-resources 语句是声明一个 或更多资源。资源就像一个必须关闭的对象 程序完成后。尝试资源 声明确保每个资源在结束时关闭 陈述。任何实现 java.lang.AutoCloseable 的对象,它 包括所有实现 java.io.Closeable 的对象,可以用作 一个资源。
所以,你应该像这样使用 errorBody:
try (ResponseBody errorBody = response.errorBody()) {
if (errorBody != null) {
String errorBodyStr = errorBody.string();
// Do something with the result. E.g. parse the JSON
} else {
// Do something if the errorBody is `null`
}
} catch (IOException e) {
// TODO
}