Retrofit2 Authorization - Global Interceptor for access token

前端 未结 5 1342
我在风中等你
我在风中等你 2020-12-22 23:24

I\'m trying to use Retrofit2, I want to add Token to my Header Like this:

Authorization: Bearer Token but the <

5条回答
  •  臣服心动
    2020-12-22 23:59

    You have two choices -- you can add it as a parameter to your call --

    @GET("api/Profiles/GetProfile?id={id}")
    Call getUser(@Path("id") String id, @Header("Authorization") String authHeader);
    

    This can be a bit annoying because you will have to pass in the "Bearer" + token on each call. This is suitable if you don't have very many calls that require the token.

    If you want to add the header to all requests, you can use an okhttp interceptor --

    OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
          @Override
          public Response intercept(Chain chain) throws IOException {
            Request newRequest  = chain.request().newBuilder()
                .addHeader("Authorization", "Bearer " + token)
                .build();
            return chain.proceed(newRequest);
          }
        }).build();
    
    Retrofit retrofit = new Retrofit.Builder()
        .client(client)
        .baseUrl(/** your url **/)
        .addConverterFactory(GsonConverterFactory.create())
        .build();
    

提交回复
热议问题