代码之家  ›  专栏  ›  技术社区  ›  Anand Rockzz

使用java在github发布版上下载404

  •  2
  • Anand Rockzz  · 技术社区  · 7 年前

    私有的

    URL url = new URL("https://github.com/anandchakru/private_repo/releases/download/rel_v1/artif-3.0.jar?access_token=myaccesstoken");
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            System.out.println(connection.getResponseCode());  //404
    

    而不是在这里,当下载 回购释放工件?

    URL url = new URL("https://github.com/anandchakru/fr/releases/download/1.0/fr.jar");
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            System.out.println(connection.getResponseCode());  //200
    

    注: 我可以下载 https://github.com/anandchakru/private_repo/releases/download/rel_v1/artif-3.0.jar?access_token=myaccesstoken (在匿名/认证模式浏览器中)。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Anand Rockzz    7 年前

    结束执行以下操作:

    1. 添加标题 Accept: application/json
    2. 打 https://api.github.com/repos/anandchakru/private_repo/releases/assets/<asset_id>?access_token=myaccesstoken 去拿神器。

    代码

    URL url = new URL("https://api.github.com/repos/anandchakru/private_repo/releases/assets/<asset_id>?access_token=<token>");
    HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
    connection.setRequestProperty("Accept", "application/octet-stream");
    ReadableByteChannel uChannel = Channels.newChannel(connection.getInputStream());
    FileOutputStream foStream = new FileOutputStream("C:/Users/username/artif-3.0.jar");
    FileChannel fChannel = foStream.getChannel();
    fChannel.transferFrom(uChannel, 0, Long.MAX_VALUE);
    uChannel.close();
    foStream.close();
    fChannel.close();
    System.out.println(connection.getResponseCode());
    

    别忘了关闭foStream&乌坎内尔。