2015-11-30 62 views
0

我试图使用带有令牌认证的请求,它在第一次运行得非常好,但是第二次我尝试了我得到401服务器错误,即使我硬派了令牌,我也得到了相同的响应,即时通讯addind空间,但相同的代码被用于工作正常,其返回401错误的第一个请求和第二请求,这是我的服务代码:令牌只能工作一次Retrofit2

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作为头文件,我不认为问题出现在代码的另一个地方,因为即使我硬编码令牌,也会遇到同样的问题。

+0

如果您收到您期望的标题,您是否在服务器端进行过测试? – svlada

+0

即时通讯使用django和不真正知道热调试这些事情,但如果我对邮递员做同样的事情,我可以做多次没有问题。 –

+0

在这里你可以看到如何设置Django的日志级别:https://docs.djangoproject.com/en/1.8/topics/logging/ – svlada

回答

0

您可以将您的授权作为参数发送给您的界面中的每个请求。它将帮助您从基本身份验证转移到OAuth2。

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