我正在尝试使用Retrofit2,我想像这样将Token添加到我的Header中:
Authorization: Bearer Token,但下面的code不起作用:
public interface APIService {
@Headers({"Authorization", "Bearer "+ token})
@GET("api/Profiles/GetProfile?id={id}")
Call<UserProfile> getUser(@Path("id") String id);
}我的服务器是asp.net webApi。请帮帮忙,我该怎么办?
发布于 2018-08-08 19:31:58
如果您想将不记名Token添加为Header,您可以执行这些类型的处理。
这是使用承载令牌的一种方式
界面中的
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id, @Header("Authorization") String auth);在此之后,您将以这种方式调用
对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("your Base URL")
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService client = retrofit.create(APIService.class);
Call<UserProfile> calltargetResponse = client.getUser("0034", "Bearer "+token);
calltargetResponse.enqueue(new Callback<UserProfile>() {
@Override
public void onResponse(Call<UserProfile> call, retrofit2.Response<UserProfile> response) {
UserProfile UserResponse = response.body();
Toast.makeText(this, " "+response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<UserProfile> call, Throwable t) {
//Toast.makeText(this, "Failed ", Toast.LENGTH_SHORT).show();
}
});另一种方法是使用intercept,这与前面的答案类似。但是,那时候你只需要像这样修改界面。
@Headers({ "Content-Type: application/json;charset=UTF-8"})
@GET("api/Profiles/GetProfile")
Call<UserProfile> getUser(@Query("id") String id); 希望这对你有用。
https://stackoverflow.com/questions/41078866
复制相似问题