我試圖用他們的網站上提供的youtubeinmp3 api下載YouTube視頻,但問題是當我試圖轉換一首不在其庫中的歌曲時(意味着它之前未被轉換),該網站將開始將該歌曲轉換爲.mp3格式。Java - HttpUrlConnection等待下載完成
現在我的HTTPUrlConnection正在發生的事情是,如果下載鏈接已經在網站上,因爲它已經被緩存,所以它運行完美,但如果網站必須執行轉換,它不會等待轉換 - 意味着我只是得到一個錯誤。
這是目前我有:
URL link = new URL("http://YouTubeInMP3.com/fetch/?video=http://www.youtube.com/watch?v=JbjtL7P9eI0&autostart=1");
InputStream in = new BufferedInputStream(link.openStream());
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n = 0;
HttpURLConnection httpConnection = (HttpURLConnection) (new URL("http://YouTubeInMP3.com/fetch/?video=http://www.youtube.com/watch?v=JbjtL7P9eI0&autostart=1").openConnection());
System.out.println(HttpURLConnection.HTTP_OK);
long completeFileSize = httpConnection.getContentLength();
long downloadedFileSize = 0;
//int currentProgress = 0;
while (-1!=(n=in.read(buf)))
{
out.write(buf, 0, n);
downloadedFileSize += n;
final int currentProgress= (int) (downloadedFileSize * 100/completeFileSize);
System.out.println("current progress: "+currentProgress);
}
System.out.println("Finished");
out.close();
in.close();
byte[] response = out.toByteArray();
FileOutputStream fos = new FileOutputStream("/Users/stephen/Desktop/test.mp3");
fos.write(response);
fos.close();
我當時的想法是找到一種方法來阻止我的程序的執行或使其在一個while循環運行,只要該網站還沒有完成加載。有沒有辦法做到這一點?
分享錯誤請 – Jan
好輸出文件將是空白的,如果我檢查'completeFileSize',它返回'-1'如果文件必須是轉換 – QQPrinti