如果我在通过拦截器返回原始响应之前添加一个拦截器来读取原始响应,我在调试改造时失败了 我的拦截器代码:
Response originalResponse = chain.proceed(builder.build());
String rawJson = originalResponse.body().string();
try {
JSONObject jsonObject = new JSONObject(rawJson);
if (jsonObject.has("respCode")) {
if (jsonObject.getString("respCode").equals("E")) {
context.getSharedPreferences(AppConstants.PREF_NAME, Context.MODE_PRIVATE).edit()
.putBoolean(AppConstants.IS_LOGGED_IN_KEY, false)
.apply();
context.startActivity(new Intent(context, LoginActivity.class));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return originalResponse;
其中没有编译错误。 没有这个 try-catch 阻止一切正常。
任何建议都会有所帮助
答案 0 :(得分:1)
ResponseBody responseBody = originalResponse.body();
BufferedSource source = responseBody.source();
source.request(Long.MAX_VALUE); // Buffer the entire body.
Buffer buffer = source.buffer();
String rawJson = buffer.clone().readString(Charset.forName("UTF-8"));