| | |
| | | |
| | | CloseableHttpClient client = null; |
| | | HttpResponse proxyResponse = null; |
| | | |
| | | try { |
| | | client = this.createHttpClient(); |
| | | proxyResponse = client.execute(host, proxyRequest); |
| | |
| | | return; |
| | | } |
| | | |
| | | do { |
| | | if (null == res || StringHelper.isNull(res.getUrl())) { |
| | | switch (res.getCategory()) { |
| | | case 2: |
| | | copeGeoService(proxyResponse, request, response, res); |
| | | break; |
| | | } |
| | | case 3: |
| | | copeSjService(proxyResponse, request, response, res); |
| | | break; |
| | | default: |
| | | entity.writeTo(response.getOutputStream()); |
| | | 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")); |
| | | private void copeGeoService(HttpResponse proxyResponse, HttpServletRequest request, HttpServletResponse response, ResEntity res) throws IOException { |
| | | if (StaticData.GET_CAPABILITIES.equals(res.getBak())) { |
| | | // |
| | | } |
| | | |
| | | byte[] bytes = str.getBytes(StandardCharsets.UTF_8); |
| | | response.setContentLength(bytes.length); |
| | | response.getOutputStream().write(bytes); |
| | | return; |
| | | } |
| | | } while (false); |
| | | proxyResponse.getEntity().writeTo(response.getOutputStream()); |
| | | } |
| | | |
| | | entity.writeTo(response.getOutputStream()); |
| | | private void copeSjService(HttpResponse proxyResponse, HttpServletRequest request, HttpServletResponse response, ResEntity res) throws IOException { |
| | | 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(proxyResponse.getEntity(), "UTF-8")); |
| | | byte[] bytes = str.getBytes(StandardCharsets.UTF_8); |
| | | response.setContentLength(bytes.length); |
| | | response.getOutputStream().write(bytes); |
| | | } else { |
| | | proxyResponse.getEntity().writeTo(response.getOutputStream()); |
| | | } |
| | | } |
| | | |
| | | private String filterStr(HttpServletRequest request, HttpServletResponse response, ResEntity res, String str) { |
| | |
| | | .replace("?" + res.getArgs() + "&", "?").replace("&" + res.getArgs() + "&", "&"); |
| | | } |
| | | |
| | | if (StaticData.THREE == res.getCategory() && str.contains(StaticData.REST_LAYER)) { |
| | | if (StaticData.I3 == res.getCategory() && str.contains(StaticData.REST_LAYER)) { |
| | | str = str.replace(res.getUrl().replace("/v6/wmts/", StaticData.REST_LAYER), proxyUrl.replace("/proxy/", "/proxy/rest/")); |
| | | } |
| | | } |