Ich schaue mir HttpURLConnection
an, die seither existieren JDK 1.1 , 1997 (fast 20 Jahre jetzt), und ich bin ziemlich erstaunt, dass es immer noch Java Core's ist offizielle Möglichkeit, HTTP-Verbindungen zu erstellen.
Seit der Veröffentlichung haben viele Bibliotheken versucht, die Verwendung von HTTP-Verbindungen zu vereinfachen (/ upgraden), wie z. B. Apache HttpClient .
Andere Bibliotheken versuchten REST HTTP-Aufrufe wie Jersey .
Soweit ich finden konnte, wurde kein Wrapper von HttpURLConnection
zum JDK hinzugefügt.
Ist HttpURLConnection
immer noch die offizielle Möglichkeit von Java Core, eine HTTP-Verbindung zu erstellen?
Wenn nicht, Wie lautet der offizielle Weg?
Das alte HttpURLConnection
ist derzeit der Standardweg Führen Sie HTTP-Anforderungen in Java SE aus.
Java EE 7 brachte die JAX-RS Client API , das ist die Standardmethode, REST-Webdienste zu nutzen, die auf dem HTTP-Protokoll basieren.
Und Java SE 9, das im Jahr 2017 veröffentlicht wird, bringt ein neue HTTP-Client-API , die HTTP / 2 und WebSocket , und kann die Legacy HttpURLConnection
API. Die Motivation für eine neue API ist im JEP 110 beschrieben:
Die bestehende
HttpURLConnection
API und ihre Implementierung haben zahlreiche Probleme:
- Die Basis
URLConnection
API wurde mit mehreren Protokollen entwickelt, von denen fast alle nicht mehr existieren (ftp, gopher, etc.).- Die API ist älter als HTTP / 1.1 und ist zu abstrakt.
- Es ist schwer zu verwenden, mit vielen undokumentierten Verhaltensweisen.
- Es funktioniert nur im Blockierungsmodus (d. h. ein Thread pro Anfrage / Antwort).
- Es ist sehr schwer zu pflegen.
Ja. HTTPUrlConnection
ist derzeit der offizielle Weg. (Wenn Sie mit "offiziell" meinen, "die Art, die von den Standard-Java-Klassenbibliotheken unterstützt wird").
Viele Leute / Gruppen haben versucht, alternative Wege zu finden, clientseitige HTTP mit unterschiedlichem Erfolg durchzuführen. Der alte ("offizielle") Weg funktioniert jedoch immer noch, und in vielen Fällen funktioniert es gut genug, dass es keine Alternative gibt.
Java hat eine starke Kultur der Aufrechterhaltung der Abwärtskompatibilität. Wenn ein Feature funktioniert, bleibt es in Ruhe. Selbst Features, die nicht ordnungsgemäß funktionieren, werden in der Regel als "veraltet" 1 markiert, wenn sie nicht rückwärtskompatibel behoben werden können. Dafür gibt es einen guten Grund. Oracle verdient mit Support-Verträgen und speziellen Produkten an Java. Ihre Hauptkunden sind Enterprise-Computing-Leute. Unternehmens-Computing-Leute wollen, dass die Anwendungen, die sie vor 20 Jahren geschrieben haben, weiter funktionieren ... ohne ständig zu basteln, um mit Dingen fertig zu werden, die kaputt gehen, wenn die Plattform (d. H. Java) aktualisiert wird.
Siehe @ Cássios Antwort für Details zu dem, was in Java 9 (nächstes Jahr) kommen wird.
1 - Es gibt Java-APIs, die in JDK 1.1 ... veraltet waren und noch immer unterstützt werden.
Tags und Links java http httpurlconnection