Я зафиксировал 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.