Notre équipe décide d'adopter Retrofit 2.0 et je fais quelques recherches initiales à ce sujet. Je suis un débutant dans cette bibliothèque.
Je me demande comment utiliser interceptor
pour ajouter des en-têtes personnalisés via Retrofits 2.0 dans notre application Android. Il existe de nombreux didacticiels sur l'utilisation interceptor
pour ajouter des en-têtes dans Retrofit 1.X, mais comme les API ont beaucoup changé dans la dernière version, je ne sais pas comment adapter ces méthodes dans la nouvelle version. De plus, Retrofit n'a pas encore mis à jour sa nouvelle documentation.
Par exemple, dans les codes suivants, comment dois-je implémenter la Interceptor
classe pour ajouter des en-têtes supplémentaires? D'ailleurs, quel est exactement l' objet non documentéChain
? Quand sera-t- intercept()
il appelé?
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();
/
et que vos URL d'API ne le font pas (stuff/post/whatever
)Réponses:
Regarde ça.
Kotlin
la source
intercept()
se déclenche à chaque fois qu'une demande est envoyée depuis l'application? Pouvons-nous attraper la réponse intermédiaire pour la redirection ou obtenir simplement la réponse finale?client.interceptors()
. Cela ressemble ànew OkHttpClient.Builder().addInterceptor(<Your Interceptor>).build()
Une autre alternative à la réponse acceptée
la source
request.newBuilder().headers(moreHeaders).build()
gardera les en-têtes d'origine?la source
Vous pouvez utiliser des en-têtes avec des intercepteurs avec ses méthodes intégrées comme celle-ci
la source
final Context context
dans la liste des paramètres.context
ici parce que c'est de la logique métier.