¿Cómo creo una URL o una URI en Java? ¿Existe una forma idiomática o bibliotecas que lo hagan fácilmente?
Necesito permitir comenzar desde una cadena de solicitud, analizar / cambiar varias partes de la URL (esquema, host, ruta, cadena de consulta) y admitir la adición y codificación automática de parámetros de consulta.
Respuestas:
A partir del componente HTTP Apache HttpClient 4.1.3, del tutorial oficial :
Editar: a partir de v4.2
URIUtils.createURI()
se ha desaprobado a favor deURIBuilder
:fuente
URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("www.google.com") .setParameters(qparams);
como dijo @stianComo autor, probablemente no soy la mejor persona para juzgar si mi constructor de URL / URI es bueno , pero aquí está: https://github.com/mikaelhg/urlbuilder
Quería la solución completa más simple posible con cero dependencias fuera del JDK, así que tuve que lanzar la mía.
fuente
Apache HTTPClient ?
fuente
Usar HTTPClient funcionó bien.
fuente
Hay muchas bibliotecas que pueden ayudarlo con la construcción de URI (no reinvente la rueda). Aquí hay tres para comenzar:
Java EE 7
org.apache.httpcomponents: httpclient: 4.5.2
org.springframework: spring-web: 4.2.5.RELEASE
Consulte también: GIST> Pruebas de constructor de URI
fuente
UriBuilder
( docs.spring.io/spring-framework/docs/current/javadoc-api/org/… ) yUriBuilderFactory
( docs.spring.io/spring-framework/docs/current/javadoc-api/org /… )Utilice OkHttp
Es 2020 y hay una biblioteca muy popular llamada OkHttp que ha sido destacada 35K veces en GitHub. Con esta biblioteca, puede crear una URL como la siguiente:
fuente
addPathSegment
(noaddPathSegments
).Después de ser criticado por sugerir la clase de URL. Seguiré el consejo del comentarista y sugeriré la clase URI en su lugar. Le sugiero que observe de cerca los constructores de un URI, ya que la clase es muy inmutable una vez creada.
Creo que este constructor te permite configurar todo lo que puedas necesitar en el URI.
fuente