簡體   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