在我们的项目中,我们使用假装客户端拨打第三方服务电话。对于内容类型应用程序/ json它工作正常。但是我们要求第三方服务URL返回pdf文件,那时我们会得到例外。
由于安全原因,我无法粘贴日志和代码,但如果有人分享我从feign客户端下载pdf文件的代码,这将对我非常有帮助。
提前致谢!!
您可以使用byte[]
作为返回类型。
@FeignClient(url = "url", name = "name")
public interface SomeFeignClient {
@GetMapping("/give-me-a-pdf")
byte[] getPDF();
}
您的服务只需致电
public byte[] getPDF() {
return SomeFeignClient.getPDF();
}
现在使用bytes数组,您可以执行任何所需的操作,例如使用保存文件
FileUtils.writeByteArrayToFile(new File("pathname"), resource);
或者提供一个端点来下载文件(Spring引导可以在不使用任何外部库的情况下返回任何内容)
@GetMapping("/pdf")
ResponseEntity getPDF() {
byte[] resource = SomeFeignClient.getPDF();
return ResponseEntity.ok()
.contentLength(resource.length)
.contentType(MediaType.APPLICATION_PDF)
.body(resource);
}