Okhttp3添加拦截器后,报错,java.io.IOException: unexpected end of stream on okhttp3.Address
发布日期:2025-04-28 00:15:18 浏览次数:13 分类:精选文章

本文共 646 字,大约阅读时间需要 2 分钟。

在使用OkHttp和Retrofit进行网络访问时,最近遇到了一个问题,错误信息为“java.io.IOException: unexpected end of stream on okhttp3.Address@XXXX”。经过分析和修正,问题得以解决。以下是详细描述和解决方法:

  • 问题分析

    • 错误信息提示读取流程意外结束,通常与HTTPS连接处理有关。
    • 可能与自定义头部信息处理不当有关,特别是“Connection”头的设置。
  • 解决方法

    • 版本判断:检测当前Android系统版本,避免在不必要的版本上引入可能导致问题的头部信息。
    • 修改请求头:在版本大于13时,添加“Connection”头并设置为“close”。
  • 代码修改示例

    if (Build.VERSION.SDK != null && Build.VERSION.SDK_INT > 13) {    request = request.newBuilder()            .removeHeader("encryptValue")            .addHeader("encryptValue", key)            .addHeader("Connection", "close")            .build();}
  • 效果验证

    • 修改后,HTTPS请求成功发送,错误信息消失,问题得到彻底解决。
  • 通过以上方法,不仅解决了当前问题,还确保了不同系统版本的兼容性,避免了潜在的连接问题。

    上一篇:okhttp3缓存
    下一篇:Okhttp3中设置超时的方法

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2026年06月04日 16时12分22秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章