Скачать изображение с Http Получить ответ - PullRequest
0 голосов
/ 19 февраля 2019


Я использую Почтальон для проверки API-ссылки, и мой ответ - изображение, показанное ниже:

Я написал такой код http get для вызова api:

HttpClient httpClient = HttpClientBuilder.create().build();

byte[] encodedBytes = Base64.getEncoder().encode("kermit:kermit".getBytes());       
HttpGet request = new HttpGet("http://127.0.0.1:8080/activiti-rest/service/runtime/process-instances/" +processInstanceId +"/diagram");
request.setHeader("Authorization", "Basic " + encodedBytes)

request.addHeader("content-type", "image/png");

HttpResponse response = httpClient.execute(request);

Теперь я хочу загрузить это изображение по определенному пути на моем жестком диске.Я искал какой-то пост здесь, но это не мой ожидаемый результат.Вы можете мне помочь?Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вы можете попробовать это

HttpClient httpClient = HttpClientBuilder.create().build();

HttpGet request = new HttpGet("http://127.0.0.1:8080/activiti-rest/service/runtime/process-instances/" +processInstanceId +"/diagram");

request.addHeader("content-type", "image/png");
try (CloseableHttpResponse response = client.execute(request)) {
    HttpEntity entity = response.getEntity();
    if (entity != null) {
        try (FileOutputStream outstream = new FileOutputStream(new File("download-image.png"),StandardCharsets.UTF_8)) {
            entity.writeTo(outstream);
        }
    }
}
0 голосов
/ 19 февраля 2019

Во-первых, вы не можете добавить байтовый массив в строку:

request.setHeader("Authorization", "Basic " + encodedBytes);

Вы можете попробовать что-то вроде этого:

request.setHeader("Authorization", "Basic " + new String(encodedBytes, "UTF-8"));

Вам придется ловить или бросатьUnsupportedEncodingException.

Во-вторых, вы не должны устанавливать заголовок content-type.Возможно, вы хотели использовать заголовок Accept.

Получив ответ, вы можете сохранить содержимое OutputStream в файл или сделать с ним все, что захотите.

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