【问题标题】:Retrofit add header with token and id改造添加带有令牌和 id 的标头
【发布时间】:2017-05-21 17:28:40
【问题描述】:

我在获取经过身份验证的用户时遇到问题。在它之前,我得到了令牌和用户 ID。现在我需要使用访问令牌和 ID 从服务器获取用户。 I have header format

现在我正在尝试使用拦截器添加带有用户令牌和 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<Driver> getAuthorizedDriver();

不同的变种抛出401错误,不知道怎么办 日志:

I/Response code: 401
I/Response message: Unauthorized`

【问题讨论】:

  • 您尝试在@GET 上方使用@Headers("token:" + TOKEN) 吗?
  • 我总是需要新的令牌值。谢谢
  • 另一种方法是通过 getAuthorizedDriver() 传递令牌和 id

标签: java android retrofit retrofit2 okhttp


【解决方案1】:

我明白了。 它必须看起来像:

@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String auth);

和身份验证:

Call<Driver> call = apiInterface.getAuthorizedDriver("Token token=" + token + ", driver_id=" + id);

【讨论】:

  • 好的,如果可行:非常适合您。但一个小小的批评。下次请提供适当的 api 文档。您提供的建议您需要 2 个参数,而不是一个由两个值组合而成的参数。不管怎样:祝你有美好的一天,继续编码:)
【解决方案2】:

尝试通过方法调用传递标头值:

@GET("driver/v1/driver")
Call<Driver> getAuthorizedDriver(@Header("authorization") String token,
                                 @Header("driver_id") Integer id);

您也不必处理这么大的拦截器代码

【讨论】:

    猜你喜欢
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2022-08-06
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多