Comment créer une URL ou un URI en Java? Y a-t-il un moyen idiomatique ou des bibliothèques qui le font facilement?
Je dois autoriser le démarrage à partir d'une chaîne de requête, analyser / modifier diverses parties d'URL (schéma, hôte, chemin, chaîne de requête) et prendre en charge l'ajout et le codage automatique des paramètres de requête.
Réponses:
À partir du composant HTTP Apache HttpClient 4.1.3, du tutoriel officiel :
Edit: à partir de la v4.2, il
URIUtils.createURI()
est obsolète au profit deURIBuilder
:la source
URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("www.google.com") .setParameters(qparams);
comme @stian l'a ditEn tant qu'auteur, je ne suis probablement pas la meilleure personne pour juger si mon constructeur d'URL / URI est bon , mais le voici néanmoins: https://github.com/mikaelhg/urlbuilder
Je voulais la solution complète la plus simple possible sans aucune dépendance en dehors du JDK, j'ai donc dû rouler la mienne.
la source
Apache HTTPClient ?
la source
L'utilisation de HTTPClient a bien fonctionné.
la source
Il existe de nombreuses bibliothèques qui peuvent vous aider à construire des URI (ne réinventez pas la roue). En voici trois pour commencer:
Java EE 7
org.apache.httpcomponents: httpclient: 4.5.2
org.springframework: spring-web: 4.2.5.RELEASE
Voir aussi: GIST> Tests URI Builder
la source
UriBuilder
( docs.spring.io/spring-framework/docs/current/javadoc-api/org/… ) etUriBuilderFactory
( docs.spring.io/spring-framework/docs/current/javadoc-api/org /… )Utilisez OkHttp
Nous sommes en 2020 et il existe une bibliothèque très populaire appelée OkHttp qui a été étoilée 35K fois sur GitHub. Avec cette bibliothèque, vous pouvez créer une URL comme ci-dessous:
la source
addPathSegment
(pasaddPathSegments
).Après avoir été critiqué pour avoir suggéré la classe URL. Je vais suivre les conseils du commentateur et suggérer la classe URI à la place. Je vous suggère de regarder de près les constructeurs pour un URI car la classe est très immuable une fois créée.
Je pense que ce constructeur vous permet de définir tout ce dont vous pourriez avoir besoin dans l'URI.
la source