Android 中的 URI 生成器,奇数 URL

URI builder in Android, odd URL

我正在尝试使用 Android 中的 URI 生成器来创建带有变量的 URL。我已阅读 Use URI builder in Android or create URL with variables,但其中未包含我需要的一些符号。

我要创建的 URL 示例:

"https://commons.wikimedia.org/w/api.php?action=query&prop=categories|coordinates|pageprops&format=json&clshow=!hidden&coprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&codistancefrompoint=38.11386944444445%7C13.356263888888888&generator=geosearch&redirects=&ggscoord=38.11386944444445%7C13.356263888888888&ggsradius=100&ggslimit=10&ggsnamespace=6&ggsprop=type%7Cname%7Cdim%7Ccountry%7Cregion%7Cglobe&ggsprimary=all&formatversion=2"

我想用一个变量替换 ggscoord。我知道如何附加路径和查询参数...但是我应该为 %7C 和 | 使用什么生成器方法? ?

为了修改查询,您可以对像“|”这样的纯字符串使用 appendQueryParameter,对于像“%7C”这样的预编码字符串,您可以使用 encodedQuery。

预编码查询参数没有附加方法。

%7C这样的字符已经被编码了,可能是中文编码或者其他的,所以如果你想给你的URL添加一些参数,就用URLEncoder.encode来编码你的原始字符串。 像这样:

Uri.Builder builder = new Uri.Builder();
builder.scheme("http")
.authority("www.lapi.transitchicago.com")
.appendPath("api")
.appendPath("1.0")
.appendPath("ttarrivals.aspx")
.appendQueryParameter("key", "[redacted]")
.appendQueryParameter("mapid",URLEncoder.encode("&&&","UTF-8"); //note this