381 votes

Codage des URL dans Android

Comment coder un URL dans Android ?

Je pensais que c'était comme ça :

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

Si je fais ce qui précède, le http:// sur urlAsString est remplacé par http%3A%2F%2F sur encodedURL et ensuite j'obtiens un java.net.MalformedURLException lorsque j'utilise l'URL.

1voto

Elango Points 61

Vous pouvez utiliser les méthodes suivantes

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();
}

ou

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();
}

le deuxième est meilleur que le premier.

0voto

Ali Jafari Points 1

Trouver les caractères arabes et les remplacer par leur encodage UTF-8. quelque chose comme ça :

for (int i = 0; i < urlAsString.length(); i++) {
    if (urlAsString.charAt(i) > 255) {
        urlAsString = urlAsString.substring(0, i) + URLEncoder.encode(urlAsString.charAt(i)+"", "UTF-8") + urlAsString.substring(i+1);
    }
}
encodedURL = urlAsString;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X