скачать jar-файл с github? - PullRequest
1 голос
/ 26 мая 2020

Я зафиксировал 10-мегабайтный jar-файл в репозитории git и хотел бы загрузить файл, используя Java. Файл можно загрузить с github напрямую, но когда я пытаюсь скрутить его из командной строки (в качестве эксперимента - мне определенно нужно сделать это из программы), две вещи: 1. Кажется, он выполняется слишком быстро - я не делаю этого. Не думаю, что я получаю настоящую банку. 2. Я думаю, что получаю HTML. Я знаю о "сырых" исходных файлах, но, по-видимому, на Github нет опции raw для двоичных файлов. добавьте эти строки, в конечном итоге воссоздав файл. Не уверен, как это будет работать с большим файлом jar.

РЕДАКТИРОВАТЬ: есть опция «необработанного просмотра», которая добавляет? Raw = true к URL-адресу, но она не работает с Java, и когда я пытаюсь из командной строки, похоже, что это не работает - по-прежнему получается html, а загрузка идет слишком быстро.

EDIT: вот curl командной строки файла jar, который присутствует в github: curl -u testuser https://github.com/test/test-api/blob/master/testjarfile.jar?raw=true

Вышеупомянутое дает результаты, но я не думаю, что это то, что нам нужно. Вот код Java:

URL url;
    String username="testuser";
    String password= "testpass";
    StringBuilder file = new StringBuilder();//deliberately not thread-safe
    try {
        url = new URL("https://github.com/test/test-api/blob/master/testjarfile.jar?raw=true");
        URLConnection uc;
        uc = url.openConnection();

        uc.setRequestProperty("X-Requested-With", "Curl");
        String userpass = username + ":" + password;
        String basicAuth = "Basic " + new String(Base64.getEncoder().encodeToString(userpass.getBytes()));//needs Base64 encoder, apache.commons.codec
        uc.setRequestProperty("Authorization", basicAuth);

        BufferedReader reader = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        String line = null;
        while ((line = reader.readLine()) != null) 
            file.append(line+"\n");
        System.out.println(file);

И этот код Java дает, что файл не найден. Обратите внимание, что с веб-страницы github кажется, что jarfile действительно загружен. Также обратите внимание на "raw = true", которое, как я догадывался, привело бы к загрузке необработанного файла, а не html, и т.д. c.

1 Ответ

1 голос
/ 26 мая 2020

Сначала попробуйте выполнить команду curl, описанную в разделе « Как я могу загрузить один необработанный файл из частного репозитория github с помощью командной строки? », чтобы проверить, работает ли curl из командной строки.

curl -H 'Authorization: token YOUR_TOKEN' \
  -H 'Accept: application/vnd.github.v4.raw' \
  -O \
  -L https://api.github.com/repos/INSERT_OWNER_HERE/INSERT_REPO_HERE/contents/PATH/TO/FILE

Затем используйте rockswang/java-curl, например, чтобы преобразовать этот curl вызов в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...