前言
这是博主的第二篇文章,第一篇还是在上学的时候发布的。现如今已经实习了 这次写文章的原因是因为 在分配到这个任务的时候 发现对于小白来说这个需求面向百度编程失效了 并没有发现特别符合要求的文章,所以才想到写下拉 也用于个人笔记。
一、需求
访问第三方接口 获得的是一个输入流 再把这个流返回给前端 同时我包装成了一个文件流。很少有这种要求 一般都是访问第三方接口 吧文件流 缓存到本地。
需求是获得一个Excel表的文件流 再把这个文件流返回给前端 访问接口直接下载
二、步骤
1.访问第三方接口
代码如下
public staticInputStream httpURLConectionGET(String GET_URL) {
//GET_URL就是你要访问的接口地址
URL url = new URL(GET_URL); // 把字符串转换为URL请求地址
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打开连接
connection.connect();// 连接会话
// 获取输入流
InputStream inputStream = connection.getInputStream();
return inputStream ;
}
2.输入流转输出流输出
public void exportExcel(String GET_URL , HttpServletResponse response) {
InputStream ips = manageConfigService.httpURLConectionGET(GET_URL );
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
//配置导出的Excel名称
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + "导出的表名"+ ".xlsx");
byte[] bytes = new byte[1024];
OutputStream outputStream = response.getOutputStream();
int count = -1;
while ((count = ips.read(bytes)) != -1) {
outputStream.write(bytes, 0, count);
}
outputStream.flush();
outputStream.close();
}
结果:
访问接口之后会自动下载Excel
总结:
重要的是对输出输入流的理解 本来就那些东西 ,但是如果全部系统性的学一遍IO流还是需要很多时间的