Android Studio Flamingo Network Inspector无法替换响应状态码问题
Android Studio Flamingo Network Inspector状态码替换不生效问题
最近试用Android Studio Flamingo的Network Inspector功能时碰到了一个坑:按照流程配置规则,把某接口返回的400状态码替换成200,同时替换响应体。配置完后Network Inspector的连接视图里显示状态码是200,响应体也符合预期,但实际在Retrofit里拿到的状态码还是400,只有响应体变了,根本没法测试代码里的成功分支。查了OkHttp的日志,状态码同样是400 Bad Request,响应体倒是正确的。
我的配置步骤
- 在Protocol、Host URL、Path和Method字段填好目标接口的信息
- 把
Apply rule for status:设为400 - 把
Replace with status code:设为200 - 在Body规则区域填入期望的JSON内容,并且勾选
Replace entire body - 发起接口请求
临时解决办法
目前官方相关问题还没修复,分享两个能解决问题的临时方案:
- 用OkHttp Interceptor手动修改响应
自己写个Interceptor拦截目标接口的响应,直接修改状态码和响应体:
class StatusCodeFixInterceptor : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { val originalResponse = chain.proceed(chain.request()) // 匹配你的目标接口,比如通过url判断 val targetUrl = "你的目标接口URL" if (originalResponse.code == 400 && chain.request().url.toString().contains(targetUrl)) { return originalResponse.newBuilder() .code(200) // 替换成你需要的响应体 .body(ResponseBody.create(originalResponse.body?.contentType(), "{\"key\":\"value\"}")) .build() } return originalResponse } }
然后把这个Interceptor添加到OkHttp Client中:
val okHttpClient = OkHttpClient.Builder() .addInterceptor(StatusCodeFixInterceptor()) .build()
- 改用MockWebServer模拟接口
如果是测试场景,直接用MockWebServer来模拟接口返回,能完全控制响应的状态码、响应体等所有参数,比Network Inspector的规则更可靠。
内容的提问来源于stack exchange,提问作者tugceaktepe
相关产品推荐
相关产品推荐

