从Http下载图片获取响应

问题描述 投票:0回答:2

我正在使用Postman来测试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);

现在我想将该图像下载到我的硬盘中的特定路径。我在这里搜索了一些帖子,但这不是我预期的结果。你能帮助我吗?谢谢!

java rest
2个回答
1
投票

首先,您不能将字节数组添加到String:

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

你可以尝试这样的事情:

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

你必须抓住或扔掉UnsupportedEncodingException

其次,你不应该设置content-type标头。你可能想要使用Accept标题。

获得响应后,您可以将OutputStream的内容保存到文件中,或者随意执行任何操作。


0
投票

你可以试试这个

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);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.