Como faço para construir um URL ou URI em Java? Existe uma forma idiomática ou bibliotecas que fazem isso facilmente?
Preciso permitir iniciar a partir de uma string de solicitação, analisar / alterar várias partes de URL (esquema, host, caminho, string de consulta) e oferecer suporte à adição e codificação automática de parâmetros de consulta.
Respostas:
A partir do Apache HTTP Component HttpClient 4.1.3, do tutorial oficial :
Editar: a partir da v4.2
URIUtils.createURI()
tornou-se obsoleto em favor deURIBuilder
:fonte
URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("www.google.com") .setParameters(qparams);
como @stian disseComo autor, provavelmente não sou a melhor pessoa para julgar se meu construtor de URL / URI é bom , mas aqui está: https://github.com/mikaelhg/urlbuilder
Eu queria a solução completa mais simples possível com zero dependências fora do JDK, então tive que lançar a minha própria.
fonte
Apache HTTPClient ?
fonte
Usar HTTPClient funcionou bem.
fonte
Existem muitas bibliotecas que podem ajudá-lo com a construção de URI (não reinvente a roda). Aqui estão três para você começar:
Java EE 7
org.apache.httpcomponents: httpclient: 4.5.2
org.springframework: spring-web: 4.2.5.RELEASE
Veja também: GIST> Testes de Construtor de URI
fonte
UriBuilder
( docs.spring.io/spring-framework/docs/current/javadoc-api/org/… ) eUriBuilderFactory
( docs.spring.io/spring-framework/docs/current/javadoc-api/org /… )Use OkHttp
É 2020 e há uma biblioteca muito popular chamado OkHttp que foi estrelou 35K vezes no GitHub. Com esta biblioteca, você pode construir um url como abaixo:
fonte
addPathSegment
(nãoaddPathSegments
).Depois de ser criticado por sugerir a classe de URL. Vou seguir o conselho do comentarista e sugerir a classe URI . Eu sugiro que você olhe atentamente para os construtores de um URI, pois a classe é muito imutável depois de criada.
Acho que esse construtor permite que você defina tudo no URI que você possa precisar.
fonte