2017年12月5日 星期二

Okhttp3 onResonse報java.lang.IllegalStateException: closed Error

今天在試OKhttp3時,

發現


 OkHttpClient okHttpClient = new OkHttpClient();


        Request request = new Request.Builder()
                .url(DATA_URL)
                .build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d(TAG, "onFailure: " + e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d(TAG, "onResponse: " + response.body().string());
                String result = response.body().string();
                parseJson(result);
            }
        });


這樣寫居然會報

java.lang.IllegalStateException: closed

                                                                                 


此exception,

後來發現

原來

 response.body().string()

被調用一次就會被close了,

只要將 Log.d註解起來,直接存入String再使用即可通過編譯

沒有留言: