Dokumentacja Retrofit 2 mówi:
Nagłówki, które należy dodać do każdego żądania, można określić przy użyciu przechwytywacza OkHttp.
Można to łatwo zrobić za pomocą poprzedniej wersji, oto odpowiednia kontrola jakości.
Ale używając retrofitu 2 nie mogłem znaleźć czegoś takiego jak setRequestInterceptor
lubsetInterceptor
metody, którą można zastosować do Retrofit.Builder
obiektu.
Wygląda też na to, że RequestInterceptor
w OkHttp już nie ma. Dokument dotyczący retrofitu kieruje nas do Interceptora , którego nie do końca rozumiałem, jak go używać do tego celu.
W jaki sposób mogę to zrobić?
enqueue
, nie widzę domyślnych nagłówków.new OkHttpClient.Builder()
zamiast tegonew OkHttpClient()
Najnowsza wersja retrofitu TUTAJ -> 2.1.0.
wersja lambda:
brzydka długa wersja:
pełna wersja:
gradle (musisz dodać przechwytywacz logowania, jeśli planujesz go używać):
źródło
Aby zarejestrować swoje żądanie i odpowiedź, potrzebujesz przechwytywacza, a także do ustawienia nagłówka, potrzebujesz przechwytywacza, Oto rozwiązanie umożliwiające dodanie obu przechwytywaczy naraz przy użyciu modernizacji 2.1
Teraz w obiekcie modernizacji dodaj ten nagłówek w kliencie
źródło
Spróbuj tego typu nagłówka dla Retrofit 1.9 i 2.0. Dla typu zawartości Json.
Możesz dodać o wiele więcej nagłówków, np
Dodaj dynamicznie do nagłówków:
Zadzwoń do metody tj
Lub
Chcesz przejść za każdym razem, a następnie Utwórz obiekt HttpClient z http Interceptor:
Następnie dodaj do obiektu modernizowanego
AKTUALIZUJ, jeśli używasz Kotlina, usuń
{ }
inaczej, to nie zadziałaźródło
W moim przypadku
addInterceptor()
nie udało się dodać nagłówków HTTP do mojego żądania, musiałem użyćaddNetworkInterceptor()
. Kod jest następujący:I kod przechwytujący:
To i więcej przykładów na ten temat
źródło
Jeśli użyjesz metody addInterceptor do dodania HttpLoggingInterceptor, nie będzie rejestrować rzeczy, które zostały dodane przez inne przechwytywacze zastosowane później niż HttpLoggingInterceptor.
Na przykład: jeśli masz dwa przechwytywacze „HttpLoggingInterceptor” i „AuthInterceptor”, a HttpLoggingInterceptor zastosowane jako pierwsze, nie możesz wyświetlić parametrów http ani nagłówków ustawionych przez AuthInterceptor.
Rozwiązałem to za pomocą metody addNetworkInterceptor.
źródło
HttpLoggingInterceptor
jako ostatni przechwytywacz, aby zobaczyć ostateczne żądanie.Użyj tego klienta modernizacji
Przekazuję JWT wraz z każdą prośbą. Nie przejmuj się nazwami zmiennych, jest to trochę mylące.
źródło
W kotlinie dodanie przechwytywacza wygląda następująco:
źródło
Biblioteka RetrofitHelper napisana w kotlin, pozwoli Ci wykonywać wywołania API, używając kilku linijek kodu.
Dodaj nagłówki w swojej klasie aplikacji w następujący sposób:
A następnie zadzwoń:
Więcej informacji można znaleźć w dokumentacji
źródło
Wersja Kotlin byłaby
źródło