RestTemplate下载文件

http使用的是二进制进行传输,也就意味着无论我们输入是什么类型,最终都会被转为二进制进行传输,那么接受方如何解析呢,这便是http头的意义,我们将解析格式放在http头中,接受方接受到数据后回去根据头中我们定义的规则解析数据,包括数据格式,类型,编码方式,所以,要使用http 进行文件传输,头是必要的。restTemplate下载文件:

RestTemplate restTemplate = new RestTemplate();

final String APPLICATION_PDF = "application/pdf";
HttpHeaders headers = new HttpHeaders();
InputStream inputStream = null;
OutputStream outputStream = null;
try {
    List list = new ArrayList<>();
    list.add(MediaType.valueOf(APPLICATION_PDF));
    headers.setAccept(list);

    ResponseEntity<byte[]> response = restTemplate.exchange(
        url,
        HttpMethod.GET,
        new HttpEntity<byte[]>(headers),
        byte[].class);

    byte[] result = response.getBody();

    inputStream = new ByteArrayInputStream(result);

    File file = new File("/Users/feixiaobo/Desktop/test3.pdf");
    if (!file.exists())
    {
        file.createNewFile();
    }

    outputStream = new FileOutputStream(file);
    int len = 0;
    byte[] buf = new byte[1024];
    while ((len = inputStream.read(buf, 0, 1024)) != -1) {
        outputStream.write(buf, 0, len);
    }
    outputStream.flush();

}finally {
    if(inputStream != null){
        inputStream.close();
    }
    if(outputStream != null){
        outputStream.close();
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值