前言
我们在添加响应切面后原接口无法接收响应的问题,核心原因是
OkHttp 的 ResponseBody 是一次性流(仅能读取一次)
也就是说代码中调用了 body.string()
读取响应体,导致流被耗尽,后续 Retrofit 解析响应时,流已无数据可读,最终接口无法获取结果。
这里的解决方法是
重新构建 ResponseBody
拦截器
完整代码
1 | import android.util.Log |
响应处理
1 | /** |
自定义协程
1 | class InterceptorCoroutineScope : CoroutineScope { |
协程使用
1 | // 创建临时协程作用域(拦截器执行完后会取消) |
设置拦截器
完整代码
1 | import android.annotation.SuppressLint |
跳过证书验证
1 |
|
Service
1 | import retrofit2.Response |