Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 即使在设置授权令牌之后,改装也会出现错误401_Android_Authorization_Retrofit - Fatal编程技术网

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);