[英]Retrofit request Header with params
我想在Android应用程序中使用两个标头进行请求,第一个标头具有一个参数。 我尝试了这个:
@Headers("Content-Type: application/json")
@GET("/ebuzon/client/show")
Call<Client> showClient(@Header("Authorization") String token);
call = api.showClient(" Bearer " +MySharedUser.getInstance().getToken());
401虚无
编辑:这应该工作,请参阅@Robert答案。 我的问题也在更新令牌
@GET("/ebuzon/client/show")
Call<Client> showClient(@Header("Authorization") String token,
@Header("Content-Type") String appJson);
call = api.showClient(" Bearer" +MySharedUser.getInstance().getToken(), "application/json");
401虚无
@Headers({"Authorization: Bearer {token}","Content-Type: application/json"})
@GET("/ebuzon/client/show")
Call<Client> showClient(@Path("token") String token);
IllegalArgumentException:URL“ / ebuzon / client / show”不包含“ {token}”。 (参数1)
我在这样的角度做同样的事情,它正在工作
var obj = this.http.get("/ebuzon/client/show",
{headers: new HttpHeaders().set("Authorization", " Bearer "+ this.token).append("Content-Type","application/json")})
.map(res => {
console.log(res);
return res
})
.catch(err => {
console.log(err);
return err;
})
return obj;
谢谢你的帮助。
也许这会帮到您。.也许您需要在请求中添加标题。
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();
方法1或2应该起作用。
我相信问题可能出在您构建价值的方式上。
(" Bearer" +MySharedUser.getInstance().getToken());
这将导致类似
" Bearer{SOME_TOKEN}"
实际上,您最有可能希望它像
"Bearer {SOME_TOKEN}"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.