OkHttp抛出异常java.net.ProtocolException: unexpected end of stream

这篇具有很好参考价值的文章主要介绍了OkHttp抛出异常java.net.ProtocolException: unexpected end of stream。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天用okHttp写了个从本地的Apache服务器上下载资源的安卓app,然后发现偶尔的下载会抛出java.net.ProtocolException: unexpected end of stream的异常,苦思不得结果后上百度查找,百度有很多分析,有可能的原因是响应头Content-length和实体长度不同,找到几个方法,有的说在请求头中添加Accept-Encoding,值为identity;有的说添加Connection,

.addHeader("Accept-Encoding", "identity")
.addHeader("Connection", "keep-alive")

但是没有用,还是会抛出这个异常,然后我以为是okHttp的问题,改用HttpURLConnection,发现还是会抛出类似的异常。

然后抛出这个异常后,我打印已下载文件内容的长度,发现只比响应头的Content-length少一字节。

然后实在找不到解决方法,我只能用最笨的方法,捕捉这个异常,启动一个新线程断点续传

最后我也没清楚为什么会这样,但是我后来嫌下载太慢,把输入流的缓冲区从1024改成8096

int len = 0;
byte[] b = new byte[8096];
while ((len = inputStream.read(b)) != -1) {
...
}

然后这个异常我就没见到过了,误打误撞程序就莫名其妙没问题了。

折腾了半天,不清楚原因,记录下来,希望有大佬可以解答我的疑惑文章来源地址https://www.toymoban.com/news/detail-565607.html

到了这里,关于OkHttp抛出异常java.net.ProtocolException: unexpected end of stream的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java.io.IOException: unexpected end of stream on 以及java.io.EOFException: \n not found: limit=0

    java.io.IOException: unexpected end of stream on java.io.OKHttp Caused by: java.io.EOFException: n not found: limit=0 content=… 在一次使用OkHttp对接两个第三方接口的时候遇到了这个报错,情景是这样的,先请求第一个接口得到一个结果,再把第一个结果作为参数传到第二个接口,但是第二个接口一直

    2024年02月12日
    浏览(67)
  • 解决报错SyntaxError:Unexpected end of JSON input

    跳转页面传递参数 报错提示 SyntaxError:Unexpected end of JSON input 原因:若对象的参数或数组的元素中遇到地址中包括? - _ . ! ~ * \\\' ( )等特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过 encodeURIComponent 编码,接收时,先通过 decodeURIComponent 解码再通过JSON.parse转换为

    2024年02月11日
    浏览(53)
  • 抛出异常与声明异常

    抛出异常: throw ,抛出异常是指在方法体内手动抛出异常错误,与系统直接报错相同也会导致程序的异常终止,但是可以自定义异常信息,一般常用于抛出编译期异常(必须做处理) 抛出异常格式: throw new 异常类(异常信息); throw :固定语法 new 异常类(异常信息) :需要抛出的异常

    2024年02月04日
    浏览(85)
  • SHELL脚本“syntax error: unexpected end of file”解决方案

    目前发现运行shell脚本时, 出现\\\"syntax error: unexpected end of file\\\"的情况有三种, 第三种应该有很多变异的情况 第一种, 常说的window下编写的shell脚本, 放到linux下运行会出现这种报错, 因为win下编写的shell脚本的格式是dos格式的, 这情况网上的解决办法有很多,如下: 如果确实是这种情

    2024年02月15日
    浏览(49)
  • 【C++】抛出异常

    try  throw catch         与return相似,return是正常的返回,throw是异常的返回。 1.设计自己的异常类型 2.通过if语句判断--throw 抛出异常 3.try调用有throw的函数,catch(指定的错误类型 e)捕获异常对象 throw抛出异常,catch捕获异常,其中catch捕获与()内类型匹配的异常。 catch(...)可

    2024年02月05日
    浏览(39)
  • 啪,还敢抛出异常

    去年又重新刷了路遥的《平凡的世界》,最近也在朋友推荐下,来看了路遥的另一部成名作《人生》。 故事中的主人公高加林,虽生在农村,面朝黄土背朝天,却不甘心像父辈一样或者,一心想着摆脱民语的束缚,追求他的理想生活。 然而命运多舛,在他所想象的理想生活

    2024年03月25日
    浏览(53)
  • 解决Tomcat异常:java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。

    调试项目的时候发现每次使用idea重新部署项目时会出现这个错误,但是不影响实际使用,重启服务器第一次部署时也不会出现错误,尝试搜索解决这个问题。 解决方法: 进入tomcat目录下查找配置文件,conf Context.xml,查找Context标签,修改属性reloadble为 reloadable=“false” (如果

    2024年02月04日
    浏览(57)
  • 杂记——19.git上传时出现the remote end hung up unexpectedly错误

    git是大家常用的项目版本控制工具,熟练地使用git可以提高开发效率,但是有时在使用git推送代码时,会提示“the remote end hung up unexpectedly”的问题,那么git推送代码提示“the remote end hung up unexpectedly”怎么解决呢,下面本文就介绍一下。 目录 1.问题描述 2.问题原因 3.解决方

    2024年02月07日
    浏览(46)
  • 解决微信小程序报错:“SyntaxError:Unexpected end of JSON input”

    1. 报错原因:        如果对象的参数或数组的元素中遇到地址,地址中包括?、这些特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码;接收时,先通过decodeURIComponent解码再通过JSON.parse转换为JSON格式的对象/数组。 2. 正确的代码如下:

    2024年02月04日
    浏览(43)
  • 抛出异常时将异常信息返给前端

      全局异常处理器负责将抛出的异常,以统一的格式返给前端。在这里起主要作用的注解是@RestControllerAdvice。 @RestControllerAdvice主要配合@ExceptionHandler使用,统一处理异常情况。 1、@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@Requ

    2024年02月16日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包