Android中的URL編碼

您如何在Android中編碼URLjava

我覺得是這樣的: android

final String encodedURL = URLEncoder.encode(urlAsString, "UTF-8");
URL url = new URL(encodedURL);

若是我作了上述狀況, http://urlAsString被替換http%3A%2F%2FencodedURL ,而後我獲得一個java.net.MalformedURLException當我使用的URL。 app


#1樓

對於android,我將使用String android.net.Uri.encode(String s) ui

使用UTF-8方案將給定字符串中的字符編碼爲'%'轉義的八位字節。 保留字母(「 AZ」,「 az」),數字(「 0-9」)和未保留的字符(「 _- !.〜'()*」)完好無損。 編碼全部其餘字符。 編碼

例/ url

String urlEncoded = "http://stackoverflow.com/search?q=" + Uri.encode(query);

#2樓

你也能夠用這個 spa

private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";
String urlEncoded = Uri.encode(path, ALLOWED_URI_CHARS);

這是最簡單的方法 .net


#3樓

try {
                    query = URLEncoder.encode(query, "utf-8");
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

#4樓

您無需對整個URL進行編碼,而僅對其中一部分來自「不可靠的來源」進行編碼。 code

String query = URLEncoder.encode("apples oranges", "utf-8");
String url = "http://stackoverflow.com/search?q=" + query;

另外,您能夠使用不引起檢查異常的DroidParts的 Strings.urlEncode(String str)orm

或使用相似

String uri = Uri.parse("http://...")
                .buildUpon()
                .appendQueryParameter("key", "val")
                .build().toString();

#5樓

您能夠使用如下方法

public static String parseUrl(String surl) throws Exception
{
    URL u = new URL(surl);
    return new URI(u.getProtocol(), u.getAuthority(), u.getPath(), u.getQuery(), u.getRef()).toString();
}

要麼

public String parseURL(String url, Map<String, String> params)
{
    Builder builder = Uri.parse(url).buildUpon();
    for (String key : params.keySet())
    {
        builder.appendQueryParameter(key, params.get(key));
    }
    return builder.build().toString();
}

第二個比第一個好。

相關文章
相關標籤/搜索