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)
但不幸的是,服务器响应消息没有授权
您可以在不使用拦截器的情况下将标头发送到服务器.只需在服务界面的方法声明中添加一个字段,如下所示:
@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)
归档时间: |
|
查看次数: |
5171 次 |
最近记录: |