我正在使用带有io和nio的Spring Boot 2创建对服务器的异步调用,然后该服务器返回文件。对于此设置,我创建了一个简单的服务器,该服务器接受一些html输入,然后返回pdf。
我的问题在于将数据(在此示例中为一些简单的html)传递到生成pdf输出的服务器。如何最好地使用Spring Boot创建POST请求?我应该首先使用POST吗?
下面的代码用于从服务器获取和传递pdf。
它的作用:
创建将接收数据的输入流
创建将写入临时文件的输出流
打开连接并流到临时文件,直到完成
代码:
@Async
private File getPdf(String html) {
BufferedInputStream inputStream = null;
OutputStream outputStream = null;
File pdf = null;
byte data[] = new byte[1024];
int byteContent;
try {
URL url = new URL("http://localhost:3000/html2pdf");
inputStream = new BufferedInputStream(url.openStream());
File directory = new File(System.getProperty("java.io.tmpdir"));
pdf = File.createTempFile("test", ".pdf", directory);
outputStream = Files.newOutputStream(Paths.get(pdf.getPath()));
while ((byteContent = inputStream.read(data, 0, 1024)) != -1) {
outputStream.write(data, 0, byteContent);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return pdf;
}
也非常欢迎其他有关如何使此代码更好的想法!