OkHttp請求回撥中response.body().string()如何呼叫兩次
阿新 • • 發佈:2019-02-16
如果你已經呼叫了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);