düzenleme tepkileri için addInterceptor & addNetworkInterceptor arasındaki farklar. Verileri talep ettiğimiz sunucu, farklı verileri başarıya veya hataya bağlı olarak döndürür ve nesneleri eşleştirmek zorlaşır.Android Retrofitler 2, daha önce yanıt olarak döndürülen JSON yanıtını düzenlemek için bir önleme <strong>(OkHttp 3.2 & Güçlendirme 2)</strong> uygulamaya çalışıyorum
Bir NetworkInterceptor olarak Retrofit için interceptor ekleyerek yapmaya çalışıyorum, ancak döndürülen dize hiçbir formatı yoktu. responseString
@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;
}
}
herhangi anlaşılabilir formatta olmadan bir dize vardı.
Normal engelleyiciye geçtikten sonra dizenin JSONObject öğesine dönüştürebileceği bir biçimi vardı.
yanıtları arasındaki farklar olan birini söyleyebilir misiniz?
bu satırın neden yeni Dize (response.body(). Bytes()); farklı içerik döndürüyor mu?
Açıklamalarınız için teşekkürler, her bir aradaki engelin ne olduğu hakkında fikir sahibi olur. Ancak, neden NetworkInterceptor okunabilir bir String döndürmez ve normal önleme yapar? –
@Lechon Biraz daha açıklamaya çalışmak için cevabıma daha fazla ekledim – roarster