我使用一些 Apache Commons 库。特别是,我使用的是 4.2.5httpclient
版和 2.4 版commons-io
。因此,使用DefaultHttpClient
我尝试从 URL 下载 pdf 文件。例如,假设我想下载这个文件:http ://www.lowaste.it/files/pdf/C12-02_filiere.pdf 。我收到 200 响应,但正如使用浏览器所见,该文件永远不会加载。似乎在第一个答案之后永远不会加载字节。
在我的代码中,我执行以下操作:
HttpEntity entity =//... I get the entity via DefaultHttpClient
InputStream in = entity.getContent();
FileOutputStream out = // init the OutputStream
org.apache.commons.io.IOUtils.copy(in, out);
该函数IOUtils.copy
似乎无限循环并且永不停止。我留下来等待文件被保存。该IOUtils.copy
函数使用IOUtils.copyLarge
. 为了完整起见,我报告了该功能:
public static long copyLarge(InputStream input, OutputStream output, byte[] buffer)
throws IOException {
long count = 0;
int n = 0;
while (EOF != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}
我还尝试替换IOUtils.copy(in, out)
为:
IOUtils.copy(IOUtils.toBufferedInputStream(in), out);
因为对象in
依赖于网络连接,但它没有帮助!
有什么想法可以解决这个问题吗?