2015-12-21 2 views
2

Я использую Retrofit библиотечную версию 2 с OkHttpClient.Как получить заголовки из всех ответов с использованием модифицированного

Я хочу получить заголовки из всех ответов.

Я нашел одно решение с OkClient:

public class InterceptingOkClient extends OkClient{ 
    public InterceptingOkClient() 
    { 
    } 

    public InterceptingOkClient(OkHttpClient client) 
    { 
     super(client); 
    } 

    @Override 
    public Response execute(Request request) throws IOException 
    { 
     Response response = super.execute(request); 

     for (Header header : response.getHeaders()) 
     { 
      // do something with header 
     } 

     return response; 
    } 
} 

Но как я могу это сделать, если я использую OkHttpClient?

ответ

-2

Для этого вы можете использовать logging interceptor. Добавьте его в качестве перехватчика к строителю OkHttpClient при создании клиента, установите уровень журнала и вуаля! У вас будет вся информация о запросе, а также ответ.

Вот как вы можете добавить перехватчик -

HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); 
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); 
okHttpBuilder.addInterceptor(loggingInterceptor); 
client = okHttpBuilder.build(); 

Есть четыре варианта, когда дело доходит до того, что вы хотите Войти - NONE, BASIC, HEADERS и BODY.

Теперь создайте экземпляр retrofit с указанным выше клиентом, и у вас будут все необходимые данные.

+0

Вопрос заключается в том, чтобы читать все ответы, что-то вроде обычного супер/базового класса, а не уровня активности. – Charan

2

Да, это старый вопрос .. но все же нашел ответ, потому что я тоже искал аналогичный.

okHttpClient.interceptors().add(new Interceptor() { 
    @Override 
    public Response intercept(Interceptor.Chain chain) throws IOException { 
     Request original = chain.request(); 

     // Request customization: add request headers 
     Request.Builder requestBuilder = original.newBuilder() 
       .header("Authorization", "auth-value"); // <-- this is the important line, to add new header - replaces value with same header name. 

     Request request = requestBuilder.build(); 
     Response response = chain.proceed(request); 
     Headers allHeaders = response.headers(); 
     String headerValue = allHeaders.get("headerName"); 
     return response; 
    } 
}); 

Надеюсь, это поможет!

P.S: без ошибок обрабатывается.

+0

, пожалуйста, поделитесь мной, если у вас есть какое-либо решение –

Смежные вопросы