2015-11-30 61 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); 
    }