使用令牌和ID添加标头
我在获取经过身份validation的用户时遇到问题。 在它之前我得到了令牌和用户ID。 现在我需要使用访问令牌和id从服务器获取用户。 我有标题格式
现在我试图使用拦截器添加带有用户令牌和id的头。
我的代码:
Interceptor interceptor = new Interceptor() { @Override public okhttp3.Response intercept(Chain chain) throws IOException { Request newRequest = chain.request().newBuilder() .addHeader("Accept", "application/json") .addHeader("authorization", token) <-?? .addHeader("driver_id", id) <-?? .build(); return chain.proceed(newRequest); } }; OkHttpClient.Builder okHttpBuilder = new OkHttpClient.Builder(); okHttpBuilder.addInterceptor(interceptor); OkHttpClient okHttpClient = okHttpBuilder.build(); Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .client(okHttpClient) .build();
接口:
@GET("driver/v1/driver") Call getAuthorizedDriver();
不同的变种抛出401错误,不知道该怎么办Log:
I/Response code: 401 I/Response message: Unauthorized`
我知道了。 它必须看起来像:
@GET("driver/v1/driver") Call getAuthorizedDriver(@Header("authorization") String auth);
并且auth:
Call call = apiInterface.getAuthorizedDriver("Token token=" + token + ", driver_id=" + id);
尝试通过方法调用传递标头值:
@GET("driver/v1/driver") Call getAuthorizedDriver(@Header("authorization") String token, @Header("driver_id") Integer id);
您也不必处理这一大块Interceptor代码