Nossa equipe decidiu adotar o Retrofit 2.0 e estou fazendo algumas pesquisas iniciais sobre ele. Eu sou um novato nesta biblioteca.
Estou me perguntando como usar interceptor
para adicionar cabeçalhos personalizados por meio de Retrofits 2.0 em nosso aplicativo Android. Existem muitos tutoriais sobre interceptor
como adicionar cabeçalhos no Retrofit 1.X, mas, como as APIs mudaram muito na versão mais recente, não tenho certeza de como adaptar esses métodos na nova versão. Além disso, Retrofit ainda não atualizou sua nova documentação.
Por exemplo, nos códigos a seguir, como devo implementar a Interceptor
classe para adicionar cabeçalhos extras? Além disso, o que exatamente é o objeto não documentadoChain
? Quando será intercept()
chamado?
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
// How to add extra headers?
return response;
}
});
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
/
e que seus URLs de API nãostuff/post/whatever
Respostas:
Veja isso.
Kotlin
fonte
intercept()
é acionado toda vez que uma solicitação é enviada do aplicativo? Podemos pegar a resposta intermediária para redirecionar ou apenas obter a resposta final?client.interceptors()
. Isto parecenew OkHttpClient.Builder().addInterceptor(<Your Interceptor>).build()
Outra alternativa da resposta aceita
fonte
request.newBuilder().headers(moreHeaders).build()
, manterá os cabeçalhos originais?fonte
Você pode usar cabeçalhos usando Interceptors com seus métodos embutidos como este
fonte
final Context context
na lista de parâmetros.context
aqui porque esta é a lógica de negócios.