将HTTPResponse主体中的字节流转换为pdf文件



当我通过邮递员点击API时,我可以下载pdf文件。当我通过java代码访问同一个API时,我会在ResponseBody中获得pdf内容。我可以创建一个包含响应正文内容的新pdf文件,但当我打开文件时,它是空白的。

我的问题是如何创建一个与响应内容相同的新文件。

我试过foll。转换响应的代码

file  = new File("/home/abc.pdf");
outputStream = new BufferedOutputStream(new FileOutputStream(file));
if (!file.exists()) {
file.createNewFile();
}
byte[] contentInBytes = response.getBody().getBytes();
System.out.println(Arrays.toString(contentInBytes));
outputStream.write(contentInBytes);
outputStream.flush();
outputStream.close();

在将整个响应体保存到文件之前创建一个临时byte[]数组来存储它是浪费。您希望将响应InputStream写入文件的OutputStream

这可以通过几种方式实现,一种是使用Guava的ByteStreams.copy(),例如:

try (OutputStream out = Files.newOutputStream(Paths.get("abc.pdf")) {
ByteStreams.copy(response.getBody(), out);
}

最新更新