1. 程式人生 > >OkHttp請求回撥中response.body().string()如何呼叫兩次

OkHttp請求回撥中response.body().string()如何呼叫兩次

如果你已經呼叫了response.body().string()一次,再次呼叫會提示你IllegalStateException: closed,為什麼會發生這樣的情況,你可以看下面的部落格
http://blog.csdn.net/m_xiaoer/article/details/72859908
但是有時候你非要呼叫response.body().string()兩次,下面是一種解決方案,就是讀取buffer之前,先對buffer進行clone一下。這時候你可以拿到返回的資料,然後你就可以繼續呼叫呼叫response.body().string()了

ResponseBody responseBody = response.body
(); BufferedSource source = responseBody.source(); source.request(Long.MAX_VALUE); // request the entire body. Buffer buffer = source.buffer(); // clone buffer before reading from it String responseBodyString = buffer.clone().readString(Charset.forName("UTF-8")) Log.d("TAG", responseBodyString);