7
votes

Existe-t-il une méthode Java qui code une collection de paramètres en tant que composant de requête URL?

Y a-t-il une bibliothèque de Java largement utilisée qui fait quelque chose comme ce que dojo.ObjectToquery () fait? Par exemple. (en supposant l'utilisation de HTTPCORE's httpparams objet, mais n'importe quelle clé la cartographie de la valeur fera): xxx

devrait donner "foo = bar & thud = grunt".

Je sais que ce n'est pas difficile d'écrire mais il semble que cela aurait déjà dû être écrit. Je ne peux tout simplement pas le trouver.


1 commentaires

Il s'avère que httpparams n'était rien comme si j'avais pensé quand j'ai écrit cette question.


5 Réponses :


5
votes

Vous n'avez pas vraiment besoin d'une bibliothèque pour cela. Je n'en ai pas trouvé un à httpcore non plus alors j'ai écrit quelque chose comme ça,

public String toString() {

    StringBuilder sb = new StringBuilder(baseUrl);

    char separator;

    if (baseUrl.indexOf('?') > 0)
        separator = '&';
    else
        separator = '?';

    for (Parameter p : parameters) {
        sb.append(separator);
        try {
            sb.append(URLEncoder.encode(p.name, "UTF-8"));
            if (p.value != null) {
                sb.append('=');
                sb.append(URLEncoder.encode(p.value, "UTF-8"));
            }
        } catch (UnsupportedEncodingException e) {
            // Not really possible, throw unchecked exception
            throw new IllegalStateException("No UTF-8");
        }

        separator = '&';
    }

    return sb.toString();
}


0 commentaires

1
votes

Si vous avez JAX-RS, il y a Javax.ws.rs.core.uribuilder; Autre que cela devrait principalement être au courant de l'urlencoder et de l'Urldecoder qui encoderont au moins les pièces de la liste des paramètres.


0 commentaires

6
votes

J'ai fini par écrire le mien. Il peut être appelé comme xxx

ce qui n'est pas si mauvais. xxx


0 commentaires

12
votes

Pourquoi réinventer la roue? Apache httpclient a UrlencodeDutils: xxx


0 commentaires

0
votes

Il y a beaucoup de bibliothèques qui peuvent vous aider avec le bâtiment URI (ne réinventez pas la roue). Voici un pour vous aider à démarrer:


Org.springFramework: Spring-Web: 4.2.5.Release H3>
import org.springframework.web.util.UriComponentsBuilder;
...
return UriComponentsBuilder.fromUriString(url).queryParam(key, value).build().toUri();