Как с помощью JAVA скачать файл с кодировкой gzip?

174
15 января 2019, 09:30

Изучаю JAVA и столкнулся с проблемой. Мне нужно отправить GET запрос на сервер и скачать файл. Кодировка файла gzip. Я использовал вот такой код:

URL url = new URL("https://s3-eu-west-1.amazonaws.com/live-usermap.twaservers.com/wgid/82599857");
String fileName = "UserID.txt";
Path targetPath = new File(fileName).toPath();
Files.copy(url.openStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);

Но он скачивает файл внутри, которого явно не то, что мне нужно. Вот что внутри файла:

‹      3O6J6767ФMІ01Х55I1СMJІLХ52KNґ4L5MіLґ  Јп¶Ђ$   

А вот что нужно:

7c2c7371-b845-54d4-bb9e-26ca91e5f9a8

Пробовал разные реализации скачивания файла, но результат примерно один и тот же. Буду благодарен за ответ.

UP: Поправил под gzip

Answer 1

Если вы посмотрите заголовки http-ответа, то увидите, что Content-Encoding: gzip По этому, для чтения нужно использовать GZIPInputStream.

    URL url = new URL("https://s3-eu-west-1.amazonaws.com/live-usermap.twaservers.com/wgid/82599857");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    System.out.println("Length : " + con.getContentLength());
    Reader reader = null;
    if ("gzip".equals(con.getContentEncoding())) {
        reader = new InputStreamReader(new GZIPInputStream(con.getInputStream()));
    }
    else {
        reader = new InputStreamReader(con.getInputStream());
    }
    while (true) {
        int ch = reader.read();
        if (ch==-1) {
            break;
        }
        System.out.print((char)ch);
    }

Вывод в консоль:

Length : 56
7c2c7371-b845-54d4-bb9e-26ca91e5f9a8
Process finished with exit code 0
READ ALSO
Spring не может найти bean repository

Spring не может найти bean repository

Никак Spring не хочет находить bean:

161
Как отобразить в grid layout все изображения на устройстве?

Как отобразить в grid layout все изображения на устройстве?

Всем привет, есть такой таск - отобразить все изображения хранящиеся в Android устройстве в Grid LayoutЯзык Java

171
Как реализовать коллизию HashMap?

Как реализовать коллизию HashMap?

Задался таким банальным вопросом как "хочу увидеть коллизию своими глазами в 8 джаве"Из истоков известно, что колизия возникает в том случае,...

165
Запуск jar через файл sh в Windows

Запуск jar через файл sh в Windows

по заданию проекта должен выслать решение, которое будет запускаться файлом с форматомbat и

135