我正在尝试从 SharedPreferences 中获取存储的 JWT,以便我可以将它们作为请求中的 header 发送,但我无法在 API 接口(interface)内获取该数据。这可能吗?
谢谢
<小时/>已解决:
对于任何寻找此内容的人:您可以将 header 作为参数传递,例如:
@FormUrlEncoded
@POST("users/getUser")
Call<String> getUser(
@Header("Token") String token,
@Field("user") String user
);
最佳答案
您还可以使用集成的拦截器
在所有请求上添加此 token ,如下所示:
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();
关于java - 是否可以将字符串传递给接口(interface)?或者至少从接口(interface)内的 SharedPreferences 获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055811/