String url = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins="+Origin+"&destinations="+destination+"&mode=driving&sensor=false&language=en-EN&units=imperial";
url = url.replaceAll(" ", "%20");
Sortie:
http://maps.googleapis.com/maps/api/distancematrix/xml?origins=150%20Sutter%20St%20San%20Francisco,%20CA,%20United%20States&destinations=1%20Palmer%20Sq%20E
Princeton,%20NJ%2008542&mode=driving&sensor=false&language=en-EN&units=imperial
Mais je reçois une erreur en disant:
Java.net.MalformedURLException: Illegal character in URL
Est-ce que quelqu'un peut m'aider ..
(Remarque: voir la mise à jour ci-dessous)
Utilisez le URLEncoder
class du paquetage Java.net
. Les espaces ne sont pas les seuls caractères à échapper des URL, et la variable URLEncoder
s'assurera que tous les caractères à coder le sont correctement.
Voici un petit exemple:
String url = "http://...";
String encodedUrl = null;
try {
encodedUrl = URLEncoder.encode(url, "UTF-8");
} catch (UnsupportedEncodingException ignored) {
// Can be safely ignored because UTF-8 is always supported
}
Mettre à jour
Comme indiqué dans les commentaires et autres réponses à cette question, la classe URLEncoder
ne permet de coder que les paramètres de chaîne de requête d'une URL. Je compte actuellement sur UrlEscapers
de Guava pour coder en toute sécurité différentes parties d'une URL.
Vous ne devriez pas appeler String.replaceAll
pour coder une URL, mais plutôt Java.net.URLEncoder.encode(String s, String enc)
.
Notez que vous devez uniquement encoder les paramètres de la chaîne de requête (nom et valeur) et non l'URL complète.
Lors du codage d'une chaîne à l'aide de Java.net.URLEncoder.encode(String s, String enc)
, les règles suivantes s'appliquent:
Voir URLEncoder
Ex:
String url = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" + URLEncoder.encode(Origin, "UTF-8");
Voici la réponse qui m'a aidé: Encodage d'adresse URL HTTP en Java
Son juste en utilisant URL
& URI
__ objets.
L’application originale mentionnée ci-dessus dans cette discussion avec URLEncoder
, codait tous les caractères dans l’url, y compris http://
, et l’utilisation de cette url
jetait exception
dans httpConnection
- n’est donc pas une bonne option. J'utilise maintenant l'approche URL/URI
mentionnée dans le lien et cela fonctionne comme prévu.
Java.net.URLEncoder.encode("Hello World", "UTF-8").replaceAll("\\+", "%20"));
ayez une belle journée =).
Essayer
str.replaceAll("\\s","%20");
Cela devrait résoudre le problème