URL.openStream () и HttpResponse.getEntity (). GetContent () загружают различные файлы Inputstream - PullRequest
0 голосов
/ 20 марта 2020

Использование класса URL в пакете java. net.

Метод 1

        String sourceUrl = "https://thumbor.thedailymeal.com/P09kUdGYdBReFSJne1qjVDIphDM=//https://videodam-assets.thedailymeal.com/filestore/5/3/0/2_37ec80e4c368169/5302scr_43fcce37a98877f.jpg%3Fv=2020-03-16+21%3A06%3A42&version=0";
        java.net.URL url = new URL(sourceUrl);
        InputStream inputStream = url.openStream();
        Files.copy(inputStream, Paths.get("/Users/test/rr.png"), StandardCopyOption.REPLACE_EXISTING);

Использование класса HttpClient Apache.

Метод 2

        String sourceUrl = "https://thumbor.thedailymeal.com/P09kUdGYdBReFSJne1qjVDIphDM=//https://videodam-assets.thedailymeal.com/filestore/5/3/0/2_37ec80e4c368169/5302scr_43fcce37a98877f.jpg%3Fv=2020-03-16+21%3A06%3A42&version=0";
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpGet httpget = new HttpGet(sourceUrl);
        HttpResponse httpresponse = httpclient.execute(httpget);
        InputStream inputStream = httpresponse.getEntity().getContent();
        Files.copy(inputStream, Paths.get("/Users/test/rr.png"), StandardCopyOption.REPLACE_EXISTING);

Я скачал файл rr.png, используя оба метода. Я обнаружил, что оба файла отличаются даже по размерам, и, используя метод 2, загрузите чистое изображение. Я прочитал, что оба метода одинаковы, но я не понимаю, почему method1 загружает правильный файл, а method2 загружает неправильный файл. Пожалуйста, уточните это, а также дайте мне знать, если в методе 2 есть исправление, с помощью которого я могу загрузить правильный файл.

1 Ответ

0 голосов
/ 22 марта 2020

Во-первых: перекрестная публикация: https://coderanch.com/t/728266/java/URL-openStream-HttpResponse-getEntity-getContent

Во-вторых: я думаю, что проблема заключается в URL-адресе и в том, как он обрабатывается по-разному внутренним классом javas и apache lib - используйте отладчик и пошагово пройдитесь по ним, чтобы увидеть, что действительно получает URL, отправив поток tls.

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