如何保存" response.body()。string()"字符串变量?

时间:2017-09-05 13:33:25

标签: java response okhttp

我不明白为什么我不能这样做:

String accept = response.body().string();

例外:

  

线程中的异常" main" java.lang.IllegalStateException:已关闭

部分代码:

Request request = new Request.Builder()
Response response = client.newCall(request).execute();
response.newBuilder();

" OkHttpClient"的典型问题。

1 个答案:

答案 0 :(得分:0)

我通常通过创建传递新的Callback对象来实现:

@Override
    public void retrieveEvents(String username) {
        service.getEvents(username).enqueue(new Callback<ArrayList<Event>>() {

            @Override
            public void onResponse(Call<ArrayList<Event>> call, Response<ArrayList<Event>> response) {
                if(response.isSuccessful()) {
                    view.updateEventsView(response.body());
                    view.setFetching(false);
                }
            }

            @Override
            public void onFailure(Call<ArrayList<Event>> call, Throwable t) {
                t.printStackTrace();
                view.updateEventsView(new ArrayList<Event>());
                view.setFetching(false);
            }
        });
    }

因此,在您的情况下,您可以将响应的主体设置为字符串值。