ПроблемаClone дооснащения объект 2 Ответ в перехватчик
Я хочу использовать пользовательский перехватчик, чтобы поймать данные перед отправкой в onResponse
в коде. Это мой Interceptor
код:
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
try {
Response response = chain.proceed(request);
Response savedResponse = response.newBuilder().build();
if (savedResponse.isSuccessful()){
String result = savedResponse.body().string();
ApiInterceptor apiInterceptor = new Gson().fromJson(result, ApiInterceptor.class);
Log.i("hieu", "");
if (activity != null){
if (apiInterceptor.getApi_result() != null){
if (apiInterceptor.getApi_result().getMainte() == AppConstants.MAINTENANCE_CODE){
// show maintenance activity
}else{
if (apiInterceptor.getApi_result().getTransfer_status() == AppConstants.TRANSFERING_CODE){
// hien thi man hinh chuyen doi
}else{
if (apiInterceptor.getApi_result().getOnly_payment_status() == AppConstants.ONLY_PAYMENT_CODE){
// hien thi man hinh qua han
}else{
if (apiInterceptor.getApi_result().getResult() != 0){
showMessage(apiInterceptor.getApi_result().getMessage());
}else{
// normal
}
}
}
}
}
}
}else{
showMessage(savedResponse.message());
}
return savedResponse;
}catch (Exception e){
LogUtils.d(SettingInterceptor.this.getClass().getName(), e.getMessage());
if (activity != null)
showMessage(activity.getString(R.string.network_error));
throw e;
}
}
Так как я знаю, что только может получить доступ только один раз в ответ после chain.proceed
, я хочу, чтобы клонировать этот ответ, поэтому я могу получить доступ и процесс более чем 1 раз с этим ответом. Поэтому я использовал
Response savedResponse = response.newBuilder().build();
Но когда я запускаю в режиме отладки, этот код работать более чем 1 раз.
Первый раз, result
возвращает правильные данные JSON. После завершения строки отладки до return savedResponse;
она снова запускается в Response savedResponse = response.newBuilder().build();
и savedResponse.isSuccessful() return success
, но result
возвращает пустую строку.
Как это исправить? Благодарю.
Можете ли вы объяснить, больше? Где мне нужен обратный вызов и куда вводить код? Потому что я думаю, что код внутри перехватчика последовательно. – TruongHieu
Почему вы хотите обработать ответ более одного раза? –
Извините. Я думаю, что я описываю проблему не чистую. Является ли программа более 1, а не то, что я хочу, сэр. Он запускается несколько раз и со второго раза, он возвращает пустую строку. – TruongHieu