下面是使用 micronaut 将文件作为休息响应发送到客户端的服务器端代码。
@Get(value = "/downloadFile", produces = MediaType.APPLICATION_OCTET_STREAM )
public HttpResponse<File> downloadDocument() throws IOException {
File sampleDocumentFile = new File(getClass().getClassLoader().getResource("SampleDocument.pdf").getFile());
return HttpResponse.ok(sampleDocumentFile).header("Content-Disposition", "attachment; filename=\"" + sampleDocumentFile.getName() + "\"" );
}
下面是调用上述端点的客户端。
@Client(value = "/client")
public interface DownloadDocumentClient {
@Get(value = "/downloadDocument", processes = MediaType.APPLICATION_OCTET_STREAM)
public Flowable<File> downloadDocument();
}
试图检索文件如下: -
Flowable<File> fileFlowable = downloadDocumentClient.downloadDocument();
Maybe<File> fileMaybe = fileFlowable.firstElement();
return fileMaybe.blockingGet();
获取异常为
io.micronaut.context.exceptions.ConfigurationException:无法创建生成的 HTTP 客户端所需的返回类型,因为没有注册从 ByteBuffer 到类 java.io.File 的 TypeConverter