Analyser la chaîne d'URL
Comment puis-je analyser les dynamiques de la chaîne de valeurs dans le but de créer des URL instances? J'ai besoin de remplacer les espaces avec %20
, les accents, les caractères non-ASCII...?
J'ai essayé d'utiliser URLEncoder
mais il encode également /
personnage et si je donne une chaîne de caractères codés avec URLEncoder
à l'URL constructeur-je obtenir un MalformedURLException
(sans protocole).
- Veuillez donner quelques exemple de Chaîne et vous êtes de code.
- différentes règles de codage va s'appliquer à différents les pièces de l'URI. Comme Lukas suggère, veuillez fournir des exemples des informations que vous commencer à vous et ce que vous voulez obtenir.
Vous devez vous connecter pour publier un commentaire.
URLEncoder
a un très trompeuse nom. C'est en fonction du La documentation javadoc utilisé encoder les paramètres de formulaire à l'aide de MIME typeapplication/x-www-form-urlencoded
.Avec ce dit, il peut être utilisé pour coder par exemple, les paramètres de la requête. Par exemple, si un paramètre ressemble
&/?#
son empreinte équivalent peut être utilisé comme:Sauf si vous avez des besoins particuliers de la URL de la documentation javadoc suggère d'utiliser
new URI(..).toURL
qui effectue l'encodage des URI selon RFC2396.L'exemple suivant
produit le résultat
http://host.com/path/?key=%7C%20?/%23ä#fragment
. Notez la façon dont les caractères tels que?&/
sont pas codé.Pour de plus amples informations, voir les posts HTTP Adresse URL de Codage en Java ou comment encoder l'URL pour éviter les caractères spéciaux en java.
MODIFIER
Depuis votre entrée est une chaîne de caractères de l'URL, en utilisant l'un des constructeur paramétré de
URI
ne sera pas vous aider. Vous ne pouvez pas utilisernew URI(strUrl)
directement car il ne cite pas les paramètres d'URL.Donc, à ce stade, nous devons utiliser une astuce pour obtenir ce que vous voulez:
Avant de pouvoir utiliser cette routine, vous devez désinfecter votre chaîne pour s'assurer qu'il représente un absolue URL. Je vois deux approches:
Deviner. Ajouter
http://
à la chaîne, sauf si elle est déjà présente.Construire l'URI à partir d'un contexte à l'aide de
nouvelle URL(URL du contexte, de la Chaîne de spec)
Donc ce que vous dites, c'est que vous souhaitez encoder une partie de votre URL, mais pas la totalité de la chose. Me semble que vous aurez à le briser en morceaux, les passer à ceux que vous voulez codé par le codeur, et ré-assembler pour obtenir l'ensemble de votre URL.