Можно ли передать строку в интерфейс? Или, по крайней мере, получить из SharedPreferences внутри интерфейса? - PullRequest
0 голосов
/ 05 января 2019

Я пытаюсь извлечь сохраненный JWT из SharedPreferences, чтобы я мог отправить их как заголовок в своем запросе, но я не могу получить эти данные в интерфейсе API. Возможно ли это?

Спасибо


РЕШИТЬ:

Для тех, кто ищет это: вы можете передать заголовок в качестве параметра, например: * 10101 *

@FormUrlEncoded
@POST("users/getUser")
Call<String> getUser(
        @Header("Token") String token,
        @Field("user") String user
);

1 Ответ

0 голосов
/ 05 января 2019

также вы можете использовать интегрированный Interceptor для добавления этого токена на ВСЕ запросы, подобные этому:

public class AuthInterceptor
    implements Interceptor {
@Override
public Response intercept(Chain chain)
        throws IOException {
    Request request = chain.request();
    request = request.newBuilder()
            .addHeader("Token", new MySharedPref().getToken())
                .build();
        return chain.proceed(request);
    }
}

и после этого добавьте его экземпляр на OkHttpClient:

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addNetworkInterceptor(new AuthInterceptor());
Retrofit retrofit = new Retrofit.Builder()
       ...
        .client(httpClient.build())

        .build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...