下载图片没有关闭http输入流导致下载超时

Posted chenggang816

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下载图片没有关闭http输入流导致下载超时相关的知识,希望对你有一定的参考价值。

在某次接入第三方厂商数据时,需要根据对方提供的URL地址下载图片,当数据量大时会遇到很多的下载图片超时问题,开始以为是第三方厂商的问题,对方排查了很久之后,说是我这边下载数据全部留在缓存区,导致缓存区满了,并通过 netstat -antp 命令查看缓存队列,证明是我这边的问题。通过此命令查看到数据接收队列数值很大,上网查询资料后说是采用了tcp长连接导致的, 于是检查代码,看看下载时是否采用长连接,于是发现下载时没有关闭输入流,修改代码后测试,问题解决。

代码(改前):

 

Url url = new URL(urlStr);

URLConnection urlConnection = url.openConnection();

InputStream in = urlConnection.getInputStream();

//读取流中的数据,写入文件

//函数退出,没有关闭流

代码(改后):

Url url = new URL(urlStr);

URLConnection urlConnection = url.openConnection();

try(InputStream in = urlConnection.getInputStream()){

//读取流中的数据,写入文件

}

//函数退出

 

以上是关于下载图片没有关闭http输入流导致下载超时的主要内容,如果未能解决你的问题,请参考以下文章

网络编程通过输入输出流下载图片

node.js:从网址下载许多图片:超时因为太多的symultanous下载

Java笔记-输入输出流

java 下载pdf文件损坏

Ruby Net::HTTP 超时

实验:用Unity抓取指定url网页中的所有图片并下载保存