Android 即使在设置授权令牌之后,改装也会出现错误401
正在尝试使用Android 即使在设置授权令牌之后,改装也会出现错误401,android,authorization,retrofit,Android,Authorization,Retrofit,正在尝试使用@POST访问api,并且我已经设置了@Header(“授权”)字符串令牌 我用@GET试过了,效果不错,但我正在传递一些表单字段,所以我需要使用@POST @POST("details") @FormUrlEncoded Call<Play> playTrack( @Header("Authorization") String TOKEN, @Field("event_id") int event_id, @Field("
@POST
访问api,并且我已经设置了@Header(“授权”)字符串令牌
我用@GET
试过了,效果不错,但我正在传递一些表单字段,所以我需要使用@POST
@POST("details")
@FormUrlEncoded
Call<Play> playTrack(
@Header("Authorization") String TOKEN,
@Field("event_id") int event_id,
@Field("longitude") double longitude,
@Field("latitude") double latitude
);
@POST(“详细信息”)
@FormUrlEncoded
呼叫playTrack(
@标题(“授权”)字符串标记,
@字段(“事件id”)输入事件id,
@字段(“经度”)双经度,
@字段(“纬度”)双纬度
);
尝试在注释上使用多部分
@Multipart
@POST("details")
Call<ResponseBody> playTrack(
@Header("Authorization") String token,
@Part("event_id") RequestBody eventId,
@Part("longitude") RequestBody longitude,
@Part("latitude") RequestBody latitude,
);
尝试创建标头侦听器并将其添加到OkHttpClient:
Interceptor headerIntercepter = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
return chain.proceed( chain.request().newBuilder().addHeader("authorization-
client", accessToken).build());
}
};
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(120, TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS)
.addInterceptor(headerIntercepter)
.build();
try {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Server_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
apiService = retrofit.create(Api.class);
看到401响应意味着请求已成功执行
服务器返回了该状态代码。这不是我的问题
改型,但在您包含的任何身份验证信息中
在服务器期望的请求中
试着用同样的数据和邮递员核对一下
注意:不要忘记将令牌类型作为前缀添加到您的令牌中您的授权令牌类型是什么,是承载者吗?错误401表示未经授权的错误。检查您是否为传递了正确的凭据authorization@Md.Asaduzzaman是的,别忘了在你的代币上加上不记名作为前缀<代码>“持票人”+代币
我已经试过了。它不起作用。但是对于我的@GET注释。成功了。所以问题不在于令牌。是的,我知道,我的意思是你可以像这个返回链一样在拦截器中添加头。继续(chain.request().newBuilder().addHeader(“Authorization”,accessToken.build());是的,我明白。我甚至试过在这里张贴之前。谢天谢地的解决办法。我也面对着你的眼睛。增加了
Interceptor headerIntercepter = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
return chain.proceed( chain.request().newBuilder().addHeader("authorization-
client", accessToken).build());
}
};
OkHttpClient client = new OkHttpClient.Builder().connectTimeout(120, TimeUnit.SECONDS).readTimeout(120, TimeUnit.SECONDS)
.addInterceptor(headerIntercepter)
.build();
try {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Server_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
apiService = retrofit.create(Api.class);