0

我尝试了两种不同的方法来实现这一点,第一种:

public class DownloadTest {

    public static void main(String[] args) {
        URL website;
        try {
            website = new URL("http://re.zoink.it/067c4cc99A");
            ReadableByteChannel rbc = Channels.newChannel(website.openStream());
            FileOutputStream fos = new FileOutputStream("vaca.torrent");
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        } catch (Exception e) {
            Logger.getLogger(DownloadTest.class.getName()).log(Level.SEVERE, null, e);
        }

    }
}

第二个:

public class DownloadTest2 {

    public static void main(String args[]) throws IOException
    {
        String Episode = "http://re.zoink.it/067c4cc99A";
        String Episode_save = "vaca.torrent";
        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new java.net.URL(Episode).openStream());
        java.io.FileOutputStream fos = new java.io.FileOutputStream(Episode_save);
        java.io.BufferedOutputStream bout = new BufferedOutputStream(fos);
        byte data[] = new byte[1024];
        int read;
        while((read = in.read(data,0,1024))>=0)
        {
            bout.write(data, 0, read);
        }
        bout.close();
        in.close();
    }

}

如果您在浏览器中使用该链接,您将收到一个对话框来下载它。或者如果您尝试:查看源代码:http ://re.zoink.it/067c4cc99A ,您可以看到它是一个实际的 torrent 文件。

这两种方法都不适用于此链接(我得到了一个损坏的文件),但是它们确实适用于其他链接,例如http://www.bt-chat.com/download1.php?id=192039&type=torrent

我的问题是如何从第一个下载文件?

4

2 回答 2

1

请注意,当您使用 http 时无法访问此特定 url,而使用 https 我可以下载,将“ http://re.zoink.it/067c4cc99A ”更改为“ https://re.zoink.it/067c4cc99A ” .

收到的响应是压缩文件,处理响应解压文件。在给定的情况下,这个 (response.getEntity().getContentEncoding()) 的输出是 gzip。我尝试将下载文件的扩展名更改为 .zip,并且我可以看到其中的 torrent 文件。

于 2014-05-28T02:21:22.707 回答
-1

如果你想下载一个文件。你可以使用 HttpClient,这个包来自 apache,例如:

public void client(){
    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet("http://re.zoink.it/067c4cc99A");
    try {
        HttpResponse response = client.execute(request);
        if(response.getStatusLine().getStatusCode() == 200){
            InputStream is = response.getEntity().getContent();   //you can use this stream to download your file

        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
于 2014-05-28T02:07:59.993 回答