【问题标题】:token only working once Retrofit2令牌只工作一次 Retrofit2
【发布时间】:2015-11-30 18:10:56
【问题描述】:

我正在尝试使用带有令牌身份验证的请求,它第一次运行良好,但第二次尝试我得到 401 服务器错误,即使我硬核令牌我得到与我添加空格相同的响应,但相同的代码用于第一个可以正常工作的请求和第二个返回 401 错误的请求,这是我的服务代码:

public static <S> S createService(Class<S> serviceClass, final String authToken) {

        Interceptor interceptor = new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                Request newRequest = chain.request().newBuilder()
                        .addHeader("Authorization", "Token " + authToken)
                        .build();
                return chain.proceed(newRequest);
            }
        };

        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        logging.setLevel(Level.BODY);
        httpClient.interceptors().add(logging);
        httpClient.interceptors().add(interceptor);

        Retrofit retrofit = builder.client(httpClient).build();

        return retrofit.create(serviceClass);
    }

我的服务器需要接收令牌 &$&%$&TGDHGDHFD3456436EXAMPLETOKEN 作为标头,我不认为问题出在代码的另一个位置,因为即使我对令牌进行硬核,我也会遇到同样的问题。

【问题讨论】:

  • 您是否在服务器端进行了测试,是否收到了您期望的标头?
  • 我正在使用 django 并且真的不知道如何调试这些东西,但是如果我在邮递员上做同样的事情,我可以做多次没有问题。
  • 这里你可以看到如何为 Django 设置日志级别:docs.djangoproject.com/en/1.8/topics/logging

标签: java authentication android-studio token retrofit


【解决方案1】:

您可以在界面中的每个请求中将您的授权作为参数发送。当您从使用基本身份验证转移到 OAuth2 时,它将为您提供帮助。

public interface createContact {
        @GET(Constants.RETROFIT_CONTACTS_PATH)
        @Headers("Content-Type: application/json")
        Call<ArrayList<ProductsModel>> createContacts(@Header("Authorization") String user);
    }

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2018-06-22
    • 2015-09-18
    • 2013-12-31
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多