美文网首页
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