错误从给定的URL
我试图下载指定网址下载文件: http://www.addic7ed.com/original/9521/7
错误从给定的URL
但是当我尝试使用我的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
转换上面给出的网址为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响应是你的java代码没有正确处理的302重定向。 IDM正确处理重定向。如果您使用的是基于* nix的系统,或者在Windows上安装了cygwin,则可以使用该工具。
卷曲-v http://myurl
将显示所有的HTTP流量信息(请求/响应)
此外:您可能想要查看Apache Commons HTTPClient。我相信支持重定向开箱即用 –
您是否尝试过使用'HTTP:// www.addic7ed.com /原厂/ 9521/7'(带'http://'添加到前面)? – mellamokb
是的,我试过,但html页面正在下载.. – RanRag