如何使用Feign Client下载pdf文件?

时间:2019-03-26 11:04:15

标签: spring-cloud spring-cloud-feign

在我们的项目中,我们使用假冒客户致电第三方服务。对于内容类型application / json,它可以正常工作。但是我们有一个要求,其中第三方服务URL返回pdf文件,而那时候我们就例外了。

出于安全原因,我无法粘贴日志和代码,但是如果有人分享我的代码,可以从伪装客户端下载pdf文件,这对我很有帮助。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用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 boot可以在不使用任何外部库的情况下返回几乎所有内容)

@GetMapping("/pdf")
ResponseEntity getPDF() {

    byte[] resource = SomeFeignClient.getPDF();

    return ResponseEntity.ok()
            .contentLength(resource.length)
            .contentType(MediaType.APPLICATION_PDF)
            .body(resource);
}