2

我正在尝试使用 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 和 | 使用什么构建器方法 ?

4

2 回答 2

5

为了修改查询,您可以将 appendQueryParameter 用于“|”之类的纯字符串,也可以将 encodeQuery 用于“%7C”之类的预编码字符串。

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

于 2015-12-21T13:00:05.413 回答
5

像这样的字符%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
于 2015-12-21T13:00:15.837 回答