You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用OkHttp创建含逗号分隔多参数的REST GET请求URL

使用OkHttp构建Google Roads API的多值参数URL

刚好我之前也用OkHttp处理过Google Roads API的请求,给你分享下具体的实现方法和注意点:

首先得明确,Google Roads API里的parameters参数是单个参数下的复合值格式,不是那种同一个参数名重复加多个值的情况(比如param=v1&param=v2),所以OkHttp默认的多参数添加方式不适用,不过处理起来也不难,而且不用手动编码特殊字符。

方法一:手动拼接复合值,让OkHttp帮你搞定编码

OkHttp的HttpUrl.Builder在添加参数时会自动处理URL编码,所以你只需要把拼接好的原始字符串(带逗号和竖线)传进去就行,不用自己替换%2c或者%7c这种编码值。

给你写个实际的代码示例:

// 先准备你的坐标组,比如每个坐标是[纬度, 经度]的数组
List<double[]> coordinates = Arrays.asList(
    new double[]{37.7749, -122.4194},
    new double[]{34.0522, -118.2437}
);

// 拼接成value1,value2|value3,value4的格式
StringBuilder paramValue = new StringBuilder();
for (int i = 0; i < coordinates.size(); i++) {
    double[] coord = coordinates.get(i);
    paramValue.append(coord[0]).append(",").append(coord[1]);
    // 最后一组坐标后面不要加竖线
    if (i != coordinates.size() - 1) {
        paramValue.append("|");
    }
}

// 用OkHttp构建最终URL
HttpUrl url = new HttpUrl.Builder()
    .scheme("https")
    .host("roads.googleapis.com")
    .addPathSegment("v1")
    .addPathSegment("nearestRoads")
    .addQueryParameter("parameters", paramValue.toString())
    .addQueryParameter("key", "YOUR_API_KEY")
    .build();

// 打印出来看看,逗号和竖线都是正常显示的,因为它们属于URL安全字符
System.out.println(url.toString());

方法二:写个工具方法简化拼接

如果经常要处理这种坐标拼接,可以封装个工具方法,用Java Stream来简化代码:

private String buildCoordinatesParam(List<double[]> coords) {
    return coords.stream()
        .map(coord -> coord[0] + "," + coord[1])
        .collect(Collectors.joining("|"));
}

之后直接调用这个方法,把坐标列表传进去,得到的字符串直接丢给addQueryParameter就行,代码更简洁。

关于特殊字符编码的疑问

你完全不用手动处理逗号和竖线的编码:

  • 根据URL规范(RFC 3986),逗号(,)和竖线(|)属于查询参数里的安全字符,不需要编码
  • 如果你的参数值里有其他特殊字符(比如空格、&、=这些),OkHttp的addQueryParameter会自动帮你编码,不用操心

最后验证下生成的URL

最终生成的URL应该是这样的:

https://roads.googleapis.com/v1/nearestRoads?parameters=37.7749,-122.4194|34.0522,-118.2437&key=YOUR_API_KEY

这个格式完全符合Google Roads API的要求,直接调用就没问题。


内容的提问来源于stack exchange,提问作者pgman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:48:37