繁体   English   中英

从给定的URL下载文件时出错

[英]Error downloading file from a given URL

我正在尝试下载给定的URL: http://www.addic7ed.com/original/9521/7 : http://www.addic7ed.com/original/9521/7

但是当我尝试使用Java代码下载文件时:

URL url = new URL("http://www.addic7ed.com/original/9521/7");
ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream("abc.srt"); 
fos.getChannel().transferFrom(rbc, 0, 1 << 24);

将下载html page ,而要下载的文件应为.srt extension文件。

但是,当我尝试使用Internet Download Manager下载以上链接时,文件将被下载。

IDM将上述给定的URL转换为http://www.addic7ed.com/srtcache/Supernatural/Supernatural%20-%2004x06%20-%20Yellow%20Fever.720p%20CTU.English.orig.Addic7ed.com.srt

所以我的问题是如何在JAVA中实现这一目标……? 是否有任何API可以实现这一目标。

您看过HTML文件了吗? 我怀疑这实际上是服务器上的错误页面,并且其中包含有关实际情况的线索。

这里有一些可能性:

  • 也许您需要提供身份验证凭据。

  • 也许服务器正在发送重定向(3xx)响应,而客户端未在执行重定向。

  • 也许您需要设置一些额外的标头,以使服务器意识到它不应将响应转换为HTML。 例如,Accept标头。

但是请注意,详细信息将取决于您尝试与之对话的服务器。


如果尝试使用Java以编程方式下载文件,则可以使用HttpUrlConnection或Apache HttpClient库。 与简单地使用URL.openStream()相比,两者都将为您提供对下载过程的更多控制

这可能是因为来自http://www.addic7ed.com/original/9521/7的http响应是302重定向,您的Java代码未正确处理。 IDM正确处理重定向。 如果您使用的是基于* nix的系统,或者Windows上安装了cygwin,则一个不错的工具是curl。

curl -v http:// myurl

将显示所有http交通信息(请求/响应)

你试过了吗?

URL url = new URL("http://www.addic7ed.com/original/9521/7");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM