2015-12-21 47 views
2

我試圖在Android中使用URI生成器來創建一個包含變量的URL。我已閱讀Use URI builder in Android or create URL with variables,但我需要的一些符號未在此列出。Android中的URI生成器,奇怪的URL

,我要創建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和|使用什麼構建器方法?

回答

5

爲了修改查詢,你可以使用appendQueryParameter來處理普通的字符串,比如「|」,任何你可以使用encodedQuery來預編碼的字符串,例如「%7C」。

預編碼查詢參數沒有附加方法。

4

%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