2017-01-06 5 views
0

Ich habe ein Problem mit authentifizierten Benutzer bekommen. Vorher habe ich Token und User ID bekommen. Jetzt muss ich Benutzer vom Server mit Zugriffstoken und ID erhalten. I have header formatNachrüstung hinzufügen Header mit Token und ID

Jetzt versuche ich Header mit Benutzer-Token und ID mit Interceptor hinzufügen.

Mein Code:

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(); 

Schnittstelle:

@GET("driver/v1/driver") 
Call<Driver> getAuthorizedDriver(); 

Verschiedene Varianten wirft 401 Fehler, nicht wissen, was Log zu tun:

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

Haben Sie versucht, @Headers ("Token:" + TOKEN) mit über die @ abrufen? –

+0

Ich brauche immer einen neuen Token-Wert. Vielen Dank –

+0

eine andere Möglichkeit wäre, das Token übergeben und die ID über die getAuthorizedDriver() – Malik

Antwort

0

ich es bekam. Es muss wie folgt aussehen:

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

Und Auth:

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

ok, wenn das geklappt hat: toll für dich. aber eine kleine Kritik. Das nächste Mal bitte eine ordnungsgemäße api doc. Die von Ihnen angegebene Methode schlug vor, dass Sie zwei Parameter anstelle einer Kombination aus zwei Werten benötigen. Wie auch immer: Schönen Tag noch und weiter mit dem Programmieren :) – Malik

0

versuchen, die passieren Header-Werte über den Methodenaufruf:

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

Sie müßten auch nicht mit diesen großen Batzen Interceptor Code beschäftigen

+0

auch versucht, bekam 401 Fehler. danke –