Android,改造捕获所有请求的特定响应代码

丁先生

我有超过 40 个 http 调用的 Retrofit Rest 客户端界面。我像这样初始化我的 RestClient:

public class RestClient {

    private static final String BASE_URL = "http://example.com/";

    private static final int TIMEOUT_IN_SECONDS = 30;

    private static OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .addInterceptor(getInterceptor())
        .connectTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
        .readTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
        .writeTimeout(TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
        .build();


    private static Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BASE_URL)
        .client(okHttpClient)
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .build();

    private RestClient() {

    }

    private static HttpLoggingInterceptor getInterceptor() {
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY
            : HttpLoggingInterceptor.Level.NONE);
        return interceptor;
    }

    public static MyService request() {
        return retrofit.create(MyService.class);
    }

}

除授权外,所有请求都需要特殊令牌。当此令牌过期时,REST API 会以403代码错误进行响应

我无法从我的每个 API 调用中添加对此代码响应的检查,因为我的应用程序中有 100 多个 api 调用。

是否有可能以某种方式赶上403 response code我的RestClient班级水平,以便我可以再次打开授权活动?

他们要

首先,我认为403是错误的,401可能是正确的。如果您确定此令牌到期时 REST API 响应403代码错误。您不能使用Authenticatorwhich 将在 401 发生时使用。所以,你需要使用Interceptor. 你可以创建TokenInterceptor工具Interceptor

public class TokenInterceptor implements Interceptor {

    @Override
    public Response intercept(Chain chain) throws IOException {
        Request request = chain.request();
        Response response = chain.proceed(request);
        if (response.code() == 403) {
            doSomething();
        }
        return response;
    }
}

okHttpClient 添加这个 TokenInterceptor。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jmeter捕获单个HTTP请求触发的所有请求和响应标头

来自分类Dev

使用FiddlerCore捕获所有请求

来自分类Dev

电子:如何捕获主流程中的所有请求响应?

来自分类Dev

如何将所有请求的500响应返回到Varnish级别的特定文件?

来自分类Dev

Android WorkManager检索所有请求

来自分类Dev

ServiceStack遍历所有请求/响应DTO

来自分类Dev

ServiceStack遍历所有请求/响应DTO

来自分类Dev

Android + RxJava + For Loop +未执行所有请求

来自分类Dev

解析JSON以响应现有请求

来自分类Dev

没有请求的Dialogflow响应

来自分类Dev

我无法捕获所有请求错误/异常。导致未知错误的原因

来自分类Dev

Activiti Rest API:提交用户任务时捕获所有请求

来自分类Dev

使用AngularJs从响应中检索标头并在所有请求上进行设置

来自分类Dev

将所有请求和响应数据记录在tomcat中

来自分类Dev

使用URL,标题,内容和响应来轮询记录所有请求

来自分类Dev

如何创建响应所有请求的.NET Framework WebAPI控制器

来自分类Dev

用URL,标题,内容和响应来轮询记录所有请求

来自分类Dev

如何使iOS应用程序缓存所有请求响应?

来自分类Dev

使用AngularJs从响应中检索标头并在所有请求上进行设置

来自分类Dev

短暂不活动后,IIS Express停止响应所有请求

来自分类Dev

如何获取为页面加载的所有请求的响应正文?

来自分类Dev

匹配所有请求的nginx位置

来自分类Dev

记录对Web服务的所有请求?

来自分类Dev

仆人:查看所有请求头

来自分类Dev

如何拒绝没有特定角色的所有请求-SpringBoot安全配置

来自分类Dev

如何拒绝没有特定角色的所有请求-SpringBoot安全配置

来自分类Dev

所有请求完成后执行代码(Facebook SDK)

来自分类Dev

我可以通过Requests-html获取所有请求的状态代码(或替代硒)

来自分类Dev

mod_rewrite所有请求到一个文件(特定目录除外)

Related 相关文章

  1. 1

    jmeter捕获单个HTTP请求触发的所有请求和响应标头

  2. 2

    使用FiddlerCore捕获所有请求

  3. 3

    电子:如何捕获主流程中的所有请求响应?

  4. 4

    如何将所有请求的500响应返回到Varnish级别的特定文件?

  5. 5

    Android WorkManager检索所有请求

  6. 6

    ServiceStack遍历所有请求/响应DTO

  7. 7

    ServiceStack遍历所有请求/响应DTO

  8. 8

    Android + RxJava + For Loop +未执行所有请求

  9. 9

    解析JSON以响应现有请求

  10. 10

    没有请求的Dialogflow响应

  11. 11

    我无法捕获所有请求错误/异常。导致未知错误的原因

  12. 12

    Activiti Rest API:提交用户任务时捕获所有请求

  13. 13

    使用AngularJs从响应中检索标头并在所有请求上进行设置

  14. 14

    将所有请求和响应数据记录在tomcat中

  15. 15

    使用URL,标题,内容和响应来轮询记录所有请求

  16. 16

    如何创建响应所有请求的.NET Framework WebAPI控制器

  17. 17

    用URL,标题,内容和响应来轮询记录所有请求

  18. 18

    如何使iOS应用程序缓存所有请求响应?

  19. 19

    使用AngularJs从响应中检索标头并在所有请求上进行设置

  20. 20

    短暂不活动后,IIS Express停止响应所有请求

  21. 21

    如何获取为页面加载的所有请求的响应正文?

  22. 22

    匹配所有请求的nginx位置

  23. 23

    记录对Web服务的所有请求?

  24. 24

    仆人:查看所有请求头

  25. 25

    如何拒绝没有特定角色的所有请求-SpringBoot安全配置

  26. 26

    如何拒绝没有特定角色的所有请求-SpringBoot安全配置

  27. 27

    所有请求完成后执行代码(Facebook SDK)

  28. 28

    我可以通过Requests-html获取所有请求的状态代码(或替代硒)

  29. 29

    mod_rewrite所有请求到一个文件(特定目录除外)

热门标签

归档