SpringBoot 中如何构建/拼接完整的 Url

default

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// DefaultUriBuilderFactory中花括号是关键字,所以这里进行编码
String tileMatrixParam = URLEncoder.encode("EPSG:" + geoServerPublishDTO.getEpsg() + ":{z}", StandardCharsets.UTF_8);
String xParam = URLEncoder.encode("{x}", StandardCharsets.UTF_8);
String yParam = URLEncoder.encode("{y}", StandardCharsets.UTF_8);
URI uri = new DefaultUriBuilderFactory().builder()
        .scheme(HttpSchemes.HTTP)
        .host(dataServiceConfig.getLocalIp())
        .port(context.getWebServer().getPort())
        .path("/gwc/service/wmts/")
        .queryParam("layer", geoServerPublishDTO.getTableLayerMap().get(0).getLayerName())
        .queryParam("style", "")
        .queryParam("tilematrixset", "EPSG:4326")
        .queryParam("Service", "WMTS")
        .queryParam("Request", "GetTile")
        .queryParam("Version", "1.0.0")
        .queryParam("Format", "image/png")
        .queryParam("TileMatrix", tileMatrixParam)
        .queryParam("TileCol", xParam)
        .queryParam("TileRow", yParam)
        .build();
// 由于大括号被编码了两次,这里需要解码两次
String templateUrl = URLDecoder.decode(URLDecoder.decode(uri.toString(), StandardCharsets.UTF_8));
geoServerPublishDTO.setTemplateUrl(templateUrl);
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……