Android 改型-是否可以避免从应用程序拦截器调用实际api并返回硬编码响应?

Android 改型-是否可以避免从应用程序拦截器调用实际api并返回硬编码响应?,android,retrofit,okhttp,interceptor,Android,Retrofit,Okhttp,Interceptor,我知道这就是拦截器的工作方式,来自应用程序的请求通过改造包装器和OkHttpp核心调用通过OkHttp核心,以通过改造包装器发出实际的网络请求和对应用程序拦截器响应的网络响应 有没有一种方法可以避免调用来自应用程序拦截器的实际请求,例如在应用程序拦截器的某些场景中检查请求URL是否为字符串,然后,在这种情况下,不要调用实际的网络请求并直接返回来自应用程序拦截器的硬编码响应?改型称之为“改装模拟”,专为您的任务设计-模拟: 你可以试试,也许你会发现它很有用 用法示例: 您可以创建改造服务的两个

我知道这就是拦截器的工作方式,来自应用程序的请求通过改造包装器和OkHttpp核心调用通过OkHttp核心,以通过改造包装器发出实际的网络请求和对应用程序拦截器响应的网络响应

有没有一种方法可以避免调用来自应用程序拦截器的实际请求,例如在应用程序拦截器的某些场景中检查请求URL是否为字符串,然后,在这种情况下,不要调用实际的网络请求并直接返回来自应用程序拦截器的硬编码响应?

改型称之为“改装模拟”,专为您的任务设计-模拟:

你可以试试,也许你会发现它很有用

用法示例:


您可以创建改造服务的两个实现—real和mocked。并根据构建风格或应用程序模式(演示模式或real http会话),通过DI提供其中一个实现。

您可以返回新的响应,而不是调用
chain.continue()
这样会阻止链条向前移动。您可以这样做

if(something)
    return Response.Builder()
           .code(200) //Or whatever you might later check from
           .protocol(Protocol.HTTP_2) //or 1
           .message("SUCCESS")
           .body(ResponseBody.create(MediaType.get("application/json"), "{\"x\": 1}")) // your response
           .request(chain.request())
           .build()
我还建议定义一个注释,并将其放入拦截器中,而不是检查URL

 request.tag(Invocation::class.java)?.method()?.getAnnotation(YourAnnotation::class.java)