添加标题以改进请求

Len*_*are 5 java android retrofit retrofit2

我有一个令牌,我保存到sharedPreferences然后我得到该令牌并将其作为授权转发给Retrofit请求.这是我的代码,下面我用来为我的改装请求添加一个标题.

我需要在下面添加标题: "授权""承载"+令牌

public static Retrofit getClient(String token) {

    HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
    logging.setLevel(HttpLoggingInterceptor.Level.BODY);
    OkHttpClient okClient = new OkHttpClient();

    Gson gson = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
            .create();

    okClient.interceptors().add(chain -> {
        Response response = chain.proceed(chain.request());
        return response;
    });

    okClient.interceptors().add(chain -> {
        Request original = chain.request();
        Request request = original.newBuilder()
                .header("Authorization", token)
                .method(original.method(), original.body())
                .build();

        return chain.proceed(request);
    });

    okClient.interceptors().add(logging);

    if (retrofit==null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(Config.BASE_URL1)
                .client(okClient)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
    return retrofit;
}
Run Code Online (Sandbox Code Playgroud)

这是我如何将我的令牌发送到改造客户端

 Retrofit retrofit = RetrofitClient.getClient("Bearer" + " " +       authUser.getToken());
 APIService mAPIService = retrofit.create(APIService.class);
Run Code Online (Sandbox Code Playgroud)

但不幸的是,服务器响应消息没有授权

Nab*_*ari 7

您可以在不使用拦截器的情况下将标头发送到服务器.只需在服务界面的方法声明中添加一个字段,如下所示:

@GET("my/orders/{id}")
Call<Order> getOrder(@Header("Authorization") String token,
                     @Path("id") int order_id);
Run Code Online (Sandbox Code Playgroud)

然后创建一个Call发送请求的对象,如下所示:

APIService apiService= retrofit.create(APIService.class);
Call<Order> call = apiService.getOrder(token, id);
call.enqueue(/*callback*/);
Run Code Online (Sandbox Code Playgroud)