首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Jsoup下载torrent文件

Java Jsoup下载torrent文件
EN

Stack Overflow用户
提问于 2018-07-27 04:21:12
回答 1查看 247关注 0票数 1

我遇到一个问题,我想连接到这个网站(https://ww2.yggtorrent.is)来下载torrent文件。我已经做了一个方法来连接到网站的Jsoup谁工作得很好,但当我尝试使用它来下载torrent文件,网站返回“你必须连接到下载文件”。

下面是我的连接代码:

代码语言:javascript
复制
Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
            .data("id", "<MyLogin>", "pass", "<MyPassword>")
            .method(Method.POST)
            .execute();

下面是我下载文件的代码

代码语言:javascript
复制
Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633").cookies(cookies)
                                    .ignoreContentType(true).execute();

FileOutputStream out = (new FileOutputStream(new java.io.File("toto.torrent")));
out.write(resultImageResponse.bodyAsBytes());
out.close();

我测试了很多东西,但现在我一无所知。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 06:33:53

在您的代码中唯一没有向我们展示的是从response中获取cookie。我希望您这样做是正确的,因为您使用它们来发出第二个请求。

这段代码看起来很像你的代码,但是包含了我如何获取cookie的示例。我还添加了referer标头。它成功地为我下载了该文件,并且utorrent正确地识别了它:

代码语言:javascript
复制
    // logging in
    System.out.println("logging in...");
    Response res = Jsoup.connect("https://ww2.yggtorrent.is/user/login")
            .timeout(10000)
            .data("id", "<MyLogin>", "pass", "<MyPassword>")
            .method(Method.POST)
            .execute();

    // getting cookies from response
    Map<String, String> cookies = res.cookies();
    System.out.println("got cookies: " + cookies);

    // optional verification if logged in
    System.out.println(Jsoup.connect("https://ww2.yggtorrent.is").cookies(cookies).get()
            .select("#panel-btn").first().text());

    // connecting with cookies, it may be useful to provide referer as some servers expect it
    Response resultImageResponse = Jsoup.connect("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
            .referrer("https://ww2.yggtorrent.is/engine/download_torrent?id=285633")
            .cookies(cookies)
            .ignoreContentType(true)
            .execute();

    // saving file
    FileOutputStream out = (new FileOutputStream(new java.io.File("C:/toto.torrent")));
    out.write(resultImageResponse.bodyAsBytes());
    out.close();
    System.out.println("done");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51546943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档