2023-04-27
藏龙卧虎
00
请注意,本文编写于 552 天前,最后修改于 297 天前,其中某些信息可能已经过时。

目录

简介
原接口
新接口

简介

遇到一个需求,需要开发一个接口:该接口底层调用另一个接口,获取文件流(图片),并将其文件流再次返回(其实就是套一层接口,起到转发的效果)。

只提供简单思路,具体情况请自行分析编写代码。

原接口

原接口通过response的输出流将图片返回,主要代码如下:

java
// 主要依赖包 import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.awt.image.BufferedImage; public void test(HttpServletResponse response){ //获取图片 BufferedImage image = server.gerImage(); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); }

以上只贴出获取到文件对象BufferedImage之后的操作,具体如何获取BufferedImage请根据情况自行处理。

获取到BufferedImage对象后,即通过response.getOutputStream()获取到响应的输出流ServletOutputStream,随后通过ImageIO.write(image, "jpg", out)工具将图片对象写入输出流。

新接口

目前思路:新接口内通过Httpclient调用原接口,将文件流读取为BufferedImage,再次转换为输出流,主要代码如下:

  • 第一部:调用方法
java
public BufferedImage doget(){ CloseableHttpClient httpclient = HttpClients.createDefault(); // 执行请求 CloseableHttpResponse response = httpclient.execute(httpGet); // 判断返回状态是否为200 //if (response.getStatusLine().getStatusCode() == 200) { InputStream inputStream = response.getEntity().getContent(); BufferedImage image = ImageIO.read(inputStream); return image; //} }

该部分代码主要通过response.getEntity().getContent()获取到接口响应的输入流,通过ImageIO.read(inputStream)工具获取到想要的BufferedImage对象。

通过这一步的代码获取到了原代码中使用的BufferedImage对象,之后就是参考源代码将其写到输出流。

  • 第二部:复用原接口逻辑
java
public void newTest(HttpServletResponse response){ //获取图片(调用上面封装好的doget方法) BufferedImage image = server.doget(); ServletOutputStream out = response.getOutputStream(); ImageIO.write(image, "jpg", out); }
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!