月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-07-22 6aeb1c17992bbefb3a4469cf8d70d1488baf87bd
src/main/java/com/moon/server/helper/HttpHelper.java
@@ -274,19 +274,23 @@
            return;
        }
        OutputStream outputStream = response.getOutputStream();
        do {
            if (null == res || StringHelper.isNull(res.getUrl())) {
                break;
            }
        Header[] headers = proxyResponse.getHeaders("content-type");
        if (null != headers && headers.length > 0 && headers[0].getValue().contains(StaticData.TEXT_XML)) {
            String str = filterStr(request, response, res, EntityUtils.toString(entity, "UTF-8"));
            Header[] headers = proxyResponse.getHeaders("content-type");
            if (null != headers && headers.length > 0 && headers[0].getValue().contains(StaticData.TEXT_XML)) {
                String str = filterStr(request, response, res, EntityUtils.toString(entity, "UTF-8"));
            byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
            response.setContentLength(bytes.length);
            outputStream.write(bytes);
            return;
        }
                byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
                response.setContentLength(bytes.length);
                response.getOutputStream().write(bytes);
                return;
            }
        } while (false);
        entity.writeTo(outputStream);
        entity.writeTo(response.getOutputStream());
    }
    private String filterStr(HttpServletRequest request, HttpServletResponse response, ResEntity res, String str) {
@@ -296,13 +300,17 @@
            url = strs[0];
            if (!StringHelper.isEmpty(strs[1])) {
                str = str.replace("?" + strs[1], "");
                str = str.replace("?" + strs[1], "").replace("&" + strs[1], "").replace("&" + strs[1], "");
            }
        }
        if (str.contains(url)) {
            String proxyUrl = res.getProxy().replace("{token}", response.getHeader("token"));
            proxyUrl = request.getRequestURL().substring(0, request.getRequestURL().indexOf(proxyUrl) + proxyUrl.length());
            str = str.replace(res.getUrl(), proxyUrl);
            str = str.replace(url, proxyUrl);
            if (str.contains(StaticData.REST_LAYER)) {
                str = str.replace(url.replace("/wmts/layer/", StaticData.REST_LAYER), proxyUrl);
            }
        }
        return str;