я пытался реализовать перехватчик (OkHttp 3,2 & Дооснащаемых 2) для редактирования ответа JSON, прежде чем возвращаются в ответ. Сервер, на который мы запрашиваем данные, возвращает разные данные, зависит от успеха или ошибки и затрудняет отображение объектов.Android дооснащения 2, различие между addInterceptor и addNetworkInterceptor для редактирования ответов
Я пытался сделать это, добавив перехватчик в «Дооснащение» в качестве NetworkInterceptor, однако возвращаемая строка не имела формата.
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Response response = chain.proceed(request);
try {
final String responseString = new String(response.body().bytes());
LOGD("OkHttp-NET-Interceptor", "Response: " + responseString);
String newResponseString = editResponse(responseString);
LOGD("OkHttp-NET-Interceptor", "Response edited: " + newResponseString);
return response.newBuilder()
.body(ResponseBody.create(response.body().contentType(), newResponseString))
.build();
}catch (Exception ex){
return response;
}
}
responseString был строка без какого-либо понятного формата.
После перехода к нормальному перехватчику строка имела формат a, который был способен преобразовать в JSONObject.
Не могли бы рассказать мне кого-то, что является отличием между ответами ?
почему эта строка новая строка (response.body(). Bytes()); вернуть другой контент?
Спасибо за ваше объяснение, это дает мне представление о том, что делает каждый перехватчик. Однако почему NetworkInterceptor не возвращает читаемую строку и нормальный перехватчик делает? –
@Lechon Я добавил больше к своему ответу, чтобы попытаться объяснить еще несколько – roarster