Question

Je souhaite analyser une URL pour obtenir une collection des paramètres de chaîne de requête en Java. Pour être clair, je dois analyser une URL donnée (ou la valeur de chaîne d'un objet d'URL), et non l'URL d'une demande de servlet.

Il semble que la méthode javax.servlet.http.HttpUtils.parseQueryString constitue un choix évident, mais elle est obsolète.

Existe-t-il une méthode alternative qui me manque ou vient-elle d'être obsolète sans fonction de remplacement / améliorée équivalente?

Était-ce utile?

La solution

Comme vous dites que l'URL ne provient pas d'une demande de servlet, la bonne réponse est, comme d'habitude, ça dépend .

Le problème avec la partie requête d'une url est qu'il n'y a pas de spécification claire sur la façon de gérer la duplication des paramètres.

Par exemple, considérons une URL comme celle-ci:

http://www.example.com?param1=value1&param2=value2&param1=value3

Qu'attendez-vous de la valeur de param1? la première valeur, la dernière, un tableau? Le problème est que, selon les spécifications, toutes ces réponses sont valides et le fournisseur du serveur est libre de prendre en charge l’une ou l’autre de ces solutions. Certains utilisent la notation param1 [] pour indiquer qu’il doit être traité comme un tableau, mais là encore, il ne s’agit pas d’une solution unifiée.

Donc, le "meilleur" La solution consiste à savoir comment votre destination gère les paramètres et à imiter le comportement avec une classe d’utilitaires que vous avez créée vous-même.

Autres conseils

Je pense que l’idée est d’utiliser plutôt HttpServletRequest. Il y a les méthodes getParameterMap (), getParameterNames () et getParameterValues ??() pour démarrer.

Il existe également la méthode getParameter (String paramname) pour obtenir la valeur d'une méthode spécifique.

Cela ne fait aucune distinction entre les paramètres de chaîne de requête et les paramètres de formulaire, donc si votre intention était de rechercher une chaîne de requête en particulier, je suppose que cela ne vous aiderait pas.

Pour autant que je sache, il n'y en a pas un.

Cependant, il ne devrait pas être trop difficile d’en écrire un vous-même. J'imagine que la partie la plus difficile serait de décoder le nom / les valeurs de l'URL (ce qui n'est vraiment pas si difficile, si vous y réfléchissez), et vous pouvez utiliser java.net.URLDecoder # decodeURL (String, String) pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top