Jak zbudować adres URL lub identyfikator URI w języku Java? Czy jest jakiś idiomatyczny sposób lub biblioteki, które z łatwością to robią?
Muszę zezwolić na rozpoczęcie od ciągu żądania, analizować / zmieniać różne części adresu URL (schemat, host, ścieżka, ciąg zapytania) i wspierać dodawanie i automatyczne kodowanie parametrów zapytania.
Odpowiedzi:
Od Apache HTTP Component HttpClient 4.1.3, z oficjalnego samouczka :
Edycja: od wersji 4.2
URIUtils.createURI()
została wycofana na korzyśćURIBuilder
:źródło
URIBuilder builder = new URIBuilder() .setScheme("http") .setHost("www.google.com") .setParameters(qparams);
jak powiedział @stianJako autor prawdopodobnie nie jestem najlepszą osobą do oceny, czy mój kreator adresów URL / URI jest dobry , ale tutaj jest tak: https://github.com/mikaelhg/urlbuilder
Chciałem najprostszego możliwego kompletnego rozwiązania z zerowymi zależnościami poza JDK, więc musiałem stworzyć własne.
źródło
Apache HTTPClient ?
źródło
Używanie HTTPClient działało dobrze.
źródło
Istnieje wiele bibliotek, które mogą pomóc w budowaniu identyfikatorów URI (nie odkrywaj na nowo koła). Oto trzy, od których możesz zacząć:
Java EE 7
org.apache.httpcomponents: httpclient: 4.5.2
org.springframework: spring-web: 4.2.5.RELEASE
Zobacz także: GIST> Testy URI Builder
źródło
UriBuilder
( docs.spring.io/spring-framework/docs/current/javadoc-api/org/… ) iUriBuilderFactory
( docs.spring.io/spring-framework/docs/current/javadoc-api/org /… )Użyj OkHttp
To 2020 i jest bardzo popularna biblioteka o nazwie OkHttp który został oznaczony gwiazdką 35k razy na GitHub. Dzięki tej bibliotece możesz zbudować adres URL, jak poniżej:
źródło
addPathSegment
(nieaddPathSegments
).Po ostrzeżeniu za zasugerowanie klasy URL. Posłużę się radą komentatora i zasugeruję zamiast tego klasę URI . Proponuję przyjrzeć się bliżej konstruktorom identyfikatora URI, ponieważ po utworzeniu klasa jest bardzo niezmienna.
Myślę, że ten konstruktor pozwala ustawić w identyfikatorze URI wszystko, czego możesz potrzebować.
źródło