Utilisation HttpGet avec des caractères illégaux dans l'URL
Je suis en train d'utiliser DefaultHttpClient
et HttpGet
à faire une demande à un service web. Malheureusement, l'URL du service web contient des caractères illégaux tels que { (ex: domain.com/service/{username}). Il est évident que le web service de nommage n'est pas bien écrit, mais je ne peux pas le changer.
Quand je fais HttpGet(url)
, je reçois ce que j'ai un caractère interdit dans l'url (c'est { et }). Si je encoder l'URL avant cela, il n'y a pas d'erreur, mais la demande va vers une URL différente où il n'y a rien.
L'url, bien que a des caractères illégaux, fonctionne à partir du navigateur, mais le HttpGet
mise en œuvre ne me permet pas de l'utiliser. Que dois-je faire ou d'utiliser à la place pour éviter ce problème?
OriginalL'auteur Catalin Morosan | 2010-05-27
Vous devez vous connecter pour publier un commentaire.
http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html
Spécifiquement:
La première fois que je l'ai essayé et a échoué parce que le délai de connexion expiré.
OriginalL'auteur Mike
Cette question est vieux, mais il m'a aidé et je voulais juste ajouter pour toute personne qui pourrait venir par que j'ai résolu ce problème sur mon application avec une variation de Mike répondre.
J'ai trouvé que l'encodage simplement les pièces travaillées, où la tentative de coder l'url en entier, a provoqué une erreur pour moi.
OriginalL'auteur Chris
nous ne devrions pas utiliser URLEncoder.encoder pour la partie adresse de l'URL parce qu'il à tort, les modifications de votre http://domain.com/{nom d'utilisateur} http%3A%2F%2Fdomain.com%2{nom d'utilisateur} et vous devez savoir qu'il va remplacer tous les espaces par " + " que c'était mieux pour moi de les remplacer par "%20".
Ici cette fonction code seul la dernière partie de votre URL, ce qui est {username} ou un nom de fichier ou tout ce qui peut avoir des caractères illégaux.
OriginalL'auteur Arash