Java 为什么是+&引用;添加到url生成器中的所有坐标?

Java 为什么是+&引用;添加到url生成器中的所有坐标?,java,string,url,format,coordinates,Java,String,Url,Format,Coordinates,我有以下代码来构建一个坐标字符串: public String generateUrl(CompleteRoutingResponseShort completeRoutingResponse) { if (completeRoutingResponse == null) { return "CompleteRoutingResponse is null"; } UriBuilder builder = UriBuilder

我有以下代码来构建一个坐标字符串:

public String generateUrl(CompleteRoutingResponseShort completeRoutingResponse) {

    if (completeRoutingResponse == null)
    {
        return "CompleteRoutingResponse is null";
    }

    UriBuilder builder = UriBuilder
            .fromPath(Constants.LIVEMAP_BASE_URL)
            .scheme("http");

    builder.queryParam("lineGeom", getCoordsLists(completeRoutingResponse));
    return builder.build().toString();
}

    private String getCoordsLists() {

        List<String> lists = new ArrayList<>();
        for (AlternativeShort alternative : completeRoutingResponses.alternatives)
        {
            String list  =  "( " + alternative.coords.stream().map(item -> String.format("%.4f , %.4f", item.x, item.y))
                    .collect(Collectors.joining(", ")) + ")";

//            list.replace("+","");
            lists.add(list);
        }

        return String.join(", ", lists);
    }
如何删除
+
符号?

在getCoordsLists()方法中,您正在使用
“,”
这就是为什么在构建url后,它会在每个坐标后添加空格

因此,只需将下面一行中的
,“
替换为
,”

            String list  =  "( " + alternative.coords.stream().map(item -> String.format("%.4f , %.4f", item.x, item.y))
                    .collect(Collectors.joining(", ")) + ")";
这是因为默认url编码器将空格替换为“+”,这样链接就不会断开


您还应该以相同的方式替换返回字符串的最后一行。

URL不能包含空格。它们必须编码为
+
%20
@Phylogenesis warning;+是一个查询,部分是文本。它只是POST DATA中的一个空格类
UriBuilder
从何而来?该类可能将空格编码为
+
%20
序列,因为正如Phylogenesis所指出的,URL中不允许使用原始空格。我猜String.format就是这样做的。你能用番石榴的细木工代替手工吗?(在getCoordsLists方法上)。您还可以使用解决方案;他们非常强大,可能会实现你想要的。我也不知道你为什么坚持逗号之间用空格?
            String list  =  "( " + alternative.coords.stream().map(item -> String.format("%.4f , %.4f", item.x, item.y))
                    .collect(Collectors.joining(", ")) + ")";