android - 改造关闭响应机构

标签 android retrofit retrofit2 okhttp

我一直收到这个错误:

 A connection to ****** was leaked. Did you forget to close a response body?

所以我继续并关闭我收到的回复。

response.body().close()

问题是如果 response.body() 已经转换为自定义类,则没有可用的关闭方法。我也尝试调用 raw 并给了我一个异常(exception):

fetchSomething.enqueue(new Callback<SomethingClass>() {
            @Override
            public void onResponse(Call<SomethingClass> call, Response<SomethingClass> response) {


                //Closes the response body
                response.raw().body().close(); //<--- gives illegalStateException

            }

            @Override
            public void onFailure(Call<SomethingClass> call, Throwable t) {

            }
        });

    }

如何关闭它?

最佳答案

如前所述here你可以做如下的事情

 ResponseBody body =  response.raw().body();
                if (response.isSuccessful()) {
                    return body.string(); // Closes automatically.
                } else {
                    body.close();
                    return null;
                }

ResponseBody body = response.raw().body();
try {
  ...
} finally {
 body.close();
}

希望它能解决您的问题。

关于android - 改造关闭响应机构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39482514/

相关文章:

java - 在 Java/Android 中从 LabView 读取共享变量

java - 获取自定义 View 的ViewGroup(Layout)

android - java.lang.ClassNotFoundException : Didn't find class "kotlinx.coroutines.experimental.Deferred"

java - 在设置它时根据 API 中的值在 POJO 中添加两个值 - Retrofit2 和 Gson 转换器

java - 经过几次调试,断点不起作用

java - sqlite android java中没有这样的列

android - activityForResult 按钮返回时的 WebView 不起作用

android - 调用 retrofit.Call<> 时出现 NullPointerException

android - java.lang.IllegalStateException : Expected BEGIN_OBJECT but was BEGIN_ARRAY Kotlin 错误

android - 使用 RXJava 和 Retrofit 的网络调用正确实现 - Android