La documentation de Retrofit 2 dit:
Les en-têtes qui doivent être ajoutés à chaque requête peuvent être spécifiés à l'aide d'un intercepteur OkHttp.
Cela peut être fait facilement en utilisant la version précédente, voici le QA associé.
Mais en utilisant retrofit 2, je n'ai pas trouvé quelque chose comme setRequestInterceptor
ou une setInterceptor
méthode qui puisse être appliquée à un Retrofit.Builder
objet.
De plus, il semble qu'il n'y RequestInterceptor
en ait plus dans OkHttp . La documentation de Retrofit nous renvoie à Interceptor que je ne comprenais pas très bien comment l'utiliser à cette fin.
Comment puis-je faire ceci?
enqueue
je ne vois pas les en-têtes par défaut.new OkHttpClient.Builder()
placenew OkHttpClient()
La dernière version de retrofit ICI -> 2.1.0.
version lambda:
vilaine version longue:
version complète:
gradle (vous devez ajouter l'intercepteur de journalisation si vous prévoyez de l'utiliser):
la source
Pour enregistrer votre demande et votre réponse, vous avez besoin d'un intercepteur et également pour définir l'en-tête, vous avez besoin d'un intercepteur, voici la solution pour ajouter à la fois l'intercepteur à la fois en utilisant la modernisation 2.1
Maintenant, dans votre objet de rénovation, ajoutez cet en-tête dans le client
la source
Essayez ce type d'en-tête pour Retrofit 1.9 et 2.0. Pour le type de contenu Json.
Vous pouvez ajouter beaucoup plus d'en-têtes, c'est-à-dire
Ajouter dynamiquement aux en-têtes:
Appelez votre méthode ie
Ou
Vous voulez passer à chaque fois, puis créer un objet HttpClient avec http Interceptor:
Puis ajouter à l'objet de mise à niveau
MISE À JOUR si vous utilisez Kotlin, supprimez
{ }
sinon cela ne fonctionnera pasla source
Dans mon cas, cela
addInterceptor()
n'a pas fonctionné pour ajouter des en-têtes HTTP à ma demande, j'ai dû utiliseraddNetworkInterceptor()
. Le code est le suivant:Et le code de l'intercepteur:
Ceci et d'autres exemples sur ce point essentiel
la source
Si vous utilisez la méthode addInterceptor pour ajouter HttpLoggingInterceptor, il ne consignera pas les éléments ajoutés par d'autres intercepteurs appliqués plus tard que HttpLoggingInterceptor.
Par exemple: Si vous avez deux intercepteurs «HttpLoggingInterceptor» et «AuthInterceptor», et HttpLoggingInterceptor appliqués en premier, vous ne pouvez pas afficher les paramètres http ou les en-têtes définis par AuthInterceptor.
Je l'ai résolu, via la méthode addNetworkInterceptor.
la source
HttpLoggingInterceptor
comme dernier intercepteur pour voir la demande finale.Utilisez ce client de rénovation
Je passe le JWT avec chaque demande. Ne vous inquiétez pas des noms de variables, c'est un peu déroutant.
la source
Dans kotlin, l'ajout d'intercepteur ressemble à ceci:
la source
La bibliothèque RetrofitHelper écrite en kotlin, vous permettra de faire des appels API, en utilisant quelques lignes de code.
Ajoutez des en-têtes dans votre classe d'application comme ceci:
Et puis passez votre appel:
Pour plus d'informations, consultez la documentation
la source
La version Kotlin serait
la source