Retrofit2-全局检查响应代码

ung

我正在使用Retrofit2向服务器发出请求。

问题是:有时服务器会针对用户的每个请求返回代码401。如果用户获得此代码,则应立即将他从应用中踢出(注销,并且在重新登录之前不能执行任何操作)。

因此,对于发送到服务器的每个请求,我想检查服务器是否响应此代码。在所有请求调用中写这张支票并不是一件很漂亮的事,所以我只想写这张支票,它会在用户每次发出请求时执行!

标清

改造(当前版本)需要HTTP客户端进行请求。由同一开发人员提供的OkHttp库与Retrofit捆绑在一起作为默认客户端。OkHttp支持向Interceptor客户端添加,从而可以拦截请求执行。

例如:

import android.util.Log;
import java.io.IOException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;


public class ErrorInterceptor implements Interceptor {
    @Override
    public Response intercept(Chain chain) throws IOException {
        // before request
        Request request = chain.request();

        // execute request
        Response response = chain.proceed(request);


        // after request

        // inspect status codes of unsuccessful responses
           switch (response.code()){
               case 401:

                   // do something else
                   Log.e("TEST","Unauthorized error for: " +request.url());

                   // perhaps throw a custom exception ?
                   throw new IOException("Unauthorized !!");
           }

        return response;
    }
}

要使用它,将其包含在OkHttpClientRetrofit实例中使用:

OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(new ErrorInterceptor())
            .build();

Retrofit retrofit = new Retrofit.Builder()
            .client(client)
            .baseUrl("/")
            .build();

因此,您可以Interceptor为每个“全局逻辑”或“跨领域关注点”实现,并将它们按顺序全部添加到Retrofit。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

响应不是来自使用Retrofit2的服务器

来自分类Dev

从Retrofit2获取字符串响应主体

来自分类Dev

在Retrofit2中接收响应正文,但未调用onResponse

来自分类Dev

retrofit2 HttpLoggingInterceptor响应正文日志不正确

来自分类Dev

retrofit2修补程序请求未与正文响应

来自分类Dev

如何使用Retrofit2和GSON从响应中获取特定的JSON数组?

来自分类Dev

Retrofit2和Gson在logcat中没有响应

来自分类Dev

Retrofit2 onResponse 方法可以有空响应吗?

来自分类Dev

Retrofit2:在 recyclerview 中执行下一个任务之前等待响应

来自分类Dev

Android - Retrofit2 - Kotlin:REST API 响应格式与模型不同

来自分类Dev

retrofit2 嵌入列表在有效响应时返回 null

来自分类Dev

是否可以在 Android Studio Retrofit2 中将更多类添加到响应类中?

来自分类Dev

需要使用retrofit2从api返回的响应中获取字符串

来自分类Dev

为什么用retrofit2 得不到响应?

来自分类Dev

带有 Retrofit2 的 Youtube API 无法解析响应(错误:PlaylistItemListResponse 的类型为 PageInfo got LinkedHashMap)

来自分类Dev

Retrofit2:如何在具有不同字段名称的对象中接收 JSON 响应?

来自分类Dev

在 kotlin 中使用 Retrofit2 恢复我在另一个类中的服务响应

来自分类Dev

RxJava and Retrofit2: NetworkOnMainThreadException

来自分类Dev

Retrofit2和Kotlin

来自分类Dev

retrofit2:添加RequestInterceptor

来自分类Dev

Retrofit2 复杂请求

来自分类Dev

Retrofit2:如果服务器响应正常并且 GSON 没有报告任何解析问题,为什么对象为 null?

来自分类Dev

RxJava和Retrofit2:NetworkOnMainThreadException

来自分类Dev

Retrofit2 Proguard删除参数

来自分类Dev

Retrofit2 HttpLoggingInterceptor日志猫

来自分类Dev

无法使用Retrofit2获取数据

来自分类Dev

使用Retrofit2的Json对象请求

来自分类Dev

Retrofit2错误处理

来自分类Dev

从 json recycleview retrofit2 获取 id

Related 相关文章

  1. 1

    响应不是来自使用Retrofit2的服务器

  2. 2

    从Retrofit2获取字符串响应主体

  3. 3

    在Retrofit2中接收响应正文,但未调用onResponse

  4. 4

    retrofit2 HttpLoggingInterceptor响应正文日志不正确

  5. 5

    retrofit2修补程序请求未与正文响应

  6. 6

    如何使用Retrofit2和GSON从响应中获取特定的JSON数组?

  7. 7

    Retrofit2和Gson在logcat中没有响应

  8. 8

    Retrofit2 onResponse 方法可以有空响应吗?

  9. 9

    Retrofit2:在 recyclerview 中执行下一个任务之前等待响应

  10. 10

    Android - Retrofit2 - Kotlin:REST API 响应格式与模型不同

  11. 11

    retrofit2 嵌入列表在有效响应时返回 null

  12. 12

    是否可以在 Android Studio Retrofit2 中将更多类添加到响应类中?

  13. 13

    需要使用retrofit2从api返回的响应中获取字符串

  14. 14

    为什么用retrofit2 得不到响应?

  15. 15

    带有 Retrofit2 的 Youtube API 无法解析响应(错误:PlaylistItemListResponse 的类型为 PageInfo got LinkedHashMap)

  16. 16

    Retrofit2:如何在具有不同字段名称的对象中接收 JSON 响应?

  17. 17

    在 kotlin 中使用 Retrofit2 恢复我在另一个类中的服务响应

  18. 18

    RxJava and Retrofit2: NetworkOnMainThreadException

  19. 19

    Retrofit2和Kotlin

  20. 20

    retrofit2:添加RequestInterceptor

  21. 21

    Retrofit2 复杂请求

  22. 22

    Retrofit2:如果服务器响应正常并且 GSON 没有报告任何解析问题,为什么对象为 null?

  23. 23

    RxJava和Retrofit2:NetworkOnMainThreadException

  24. 24

    Retrofit2 Proguard删除参数

  25. 25

    Retrofit2 HttpLoggingInterceptor日志猫

  26. 26

    无法使用Retrofit2获取数据

  27. 27

    使用Retrofit2的Json对象请求

  28. 28

    Retrofit2错误处理

  29. 29

    从 json recycleview retrofit2 获取 id

热门标签

归档