背景
某次用AS运行程序后,发现 OkHttp3 POST请求失败。
定位问题后发现,RequestBody 的 public void writeTo(@NonNull BufferedSink sink)
方法被执行了2次,而数据源在第一次执行后就close()
掉了,导致报IOException: unexpected end of stream on okhttp3
错误。
原因
开启了AS的高级性能剖析,该功能会在 Android 7.1 及以下的版本增加 OkHttp3Interceptor 的类,就是这个类会再执行一次writeTo()
方法。
解决
请按以下步骤操作:
- 依次选择 Run > Edit Configurations。
- 在左侧窗格中选择您的应用模块。
- 点击 Profiling 标签页,然后取消选中
Enable advanced profiling for older devices
。 - 再次构建并运行您的应用。
网友评论