[英]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.