Comment encodez-vous une 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://
in urlAsString
est remplacé par http%3A%2F%2F
in encodedURL
puis j'obtiens un java.net.MalformedURLException
lorsque j'utilise l'URL.
Uri.encode(query);
place.Je vais ajouter une suggestion ici. Vous pouvez le faire, ce qui évite d'avoir à obtenir des bibliothèques externes.
Essayez ceci:
Vous pouvez voir que dans cette URL particulière, j'ai besoin d'avoir ces espaces encodés afin de pouvoir l'utiliser pour une demande.
Cela profite de quelques fonctionnalités disponibles dans les classes Android. Tout d'abord, la classe URL peut décomposer une URL en ses composants appropriés, il n'est donc pas nécessaire que vous effectuiez un travail de recherche / remplacement de chaîne. Deuxièmement, cette approche tire parti de la fonctionnalité de classe URI consistant à échapper correctement les composants lorsque vous construisez un URI via des composants plutôt qu'à partir d'une seule chaîne.
La beauté de cette approche est que vous pouvez prendre n'importe quelle chaîne d'URL valide et la faire fonctionner sans avoir besoin de connaissances particulières vous-même.
la source
Pour Android, j'utiliserais String android.net.Uri.encode (String s)
Ex/
la source
Uri.encode("a=1&b=1")
produita%3D1%26b%3D1
mais attendua=1&b=1
a=1&b=1
tant que requête, vous souhaitez interroger exactement cela.Vous pouvez également l'utiliser
c'est la méthode la plus simple
la source
la source
vous pouvez utiliser les méthodes ci-dessous
ou
le second est meilleur que le premier.
la source
Trouvez des caractères arabes et remplacez-les par son encodage UTF-8. quelque chose comme ça:
la source