美文网首页
OkHttp3的RequestBody执行两次writeTo()

OkHttp3的RequestBody执行两次writeTo()

作者: Mr_Leung | 来源:发表于2020-12-14 17:33 被阅读0次

背景

某次用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()方法。

OkHttp3Interceptor

解决

请按以下步骤操作:

  1. 依次选择 Run > Edit Configurations。
  2. 在左侧窗格中选择您的应用模块。
  3. 点击 Profiling 标签页,然后取消选中 Enable advanced profiling for older devices
  4. 再次构建并运行您的应用。

相关文章

网友评论

      本文标题:OkHttp3的RequestBody执行两次writeTo()

      本文链接:https://www.haomeiwen.com/subject/qszvgktx.html