diff --git a/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java b/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java index 82fbfc70..37600119 100644 --- a/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java +++ b/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java @@ -10,6 +10,7 @@ import com.jfinal.upload.MultipartRequest; import com.jfinal.upload.UploadFile; import io.jsonwebtoken.Claims; import okhttp3.*; +import org.apache.commons.io.IOUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -55,16 +56,46 @@ public class RouterHandler extends Handler { private void executeRequest(Request request, HttpServletResponse res) throws IOException { Response response = OK_HTTP_CLIENT.newCall(request).execute(); if (response.isSuccessful()) { - String responseBody = null; - if (response.body() != null) { - responseBody = response.body().string(); + ResponseBody body = response.body(); + if (body != null) { + // 获取Content-Type + String contentType = response.header("Content-Type"); + + if (contentType != null && contentType.startsWith("image/")) { + // 处理图片响应 + handleImageResponse(res, body, contentType); + } else { + // 处理文本响应 + handleTextResponse(res, body); + } + } else { + renderJson(res, new RetBean(RetBean.ERROR, "响应体为空").toString()); } - renderJson(res, responseBody); } else { renderJson(res, new RetBean(RetBean.ERROR, "请求失败!").toString()); } } + // 处理图片响应 + private void handleImageResponse(HttpServletResponse res, ResponseBody body, String contentType) throws IOException { + // 设置响应头 + res.setContentType(contentType); + res.setHeader("Cache-Control", "no-store"); + res.setHeader("Pragma", "no-cache"); + res.setDateHeader("Expires", 0); + + // 将图片数据写入响应 + try (InputStream inputStream = body.byteStream()) { + IOUtils.copy(inputStream, res.getOutputStream()); + } + } + + // 处理文本响应 + private void handleTextResponse(HttpServletResponse res, ResponseBody body) throws IOException { + String responseBody = body.string(); + renderJson(res, responseBody); + } + public static RequestBody createRequestBody(HttpServletRequest req) { FormBody.Builder formBodyBuilder = new FormBody.Builder(); // 遍历请求中的参数