13.8Apache HttpComponents und Commons Net *
Das Java-Netzwerkpaket und insbesondere die Klassen URLConnection bzw. HttpConnection bieten Basisfunktionalität für den Zugriff auf Internetressourcen. Allerdings fehlen komfortable Methoden, etwa für Multi-Part Form-Data POST, also Möglichkeiten zum Hochladen von Dateien. Die müsste jeder selbst implementieren, was Zeit und Nerven kostet.
13.8.1HttpComponents
Die freie, quelloffene Bibliothek Apache HttpComponents(http://hc.apache.org/) bietet komfortable Unterstützung für alles Mögliche rund um HTTP-Protokolle, HTTP-Methoden, Authentifizierung, Sicherheit usw. Es gibt drei Bestandteile von HttpComponents:
HttpComponents Core
HttpComponents Client
HttpComponents AsyncClient
Der Client bietet eine API für HTTP-Anfragen mit
allen HTTP-Methoden (GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE)
Verschlüsselung mit HTTPS (HTTP über SSL)
Verbindungen durch HTTP-Proxies
getunnelten HTTPS-Verbindungen durch HTTP-Proxies via CONNECT
Verbindungen mit SOCKS-Proxies (Version 4 und 5)
Authentifizierung mit BASIC, Digest und NTLM (NT LAN Manager)
Multi-Part Form POST
und vielem mehr
HttpComponents Core ist ein Baustein für den Aufbau eigener Client-/Server-Protokolle. Synchrone und asynchrone HTTP-Dienste sind damit möglich. HttpComponents AsyncClient ist eine Bibliothek, die auf HttpCore und HttpClient basiert und eine Alternative zu HttpClient, die für eine große Anzahl anfragender Clients optimiert ist.
Eine weitere freie, quelloffene Bibliothek ist die Asynchronous Http and WebSocket Client library for Java (http://github.com/AsyncHttpClient/async-http-client). Sie benutzt einen modernen API-Stil und aktuelle Java-Datentypen und unterstützt WebSockets.
Im Rahmen einer Standardisierung für JSON-Endpunkte wurde ebenfalls eine Client-API entworfen; sie lässt sich auch für allgemeine HTTP-Anfragen nutzen. Kapitel 15, »RESTful und SOAP-Web-Services«, stellt diese API vor.
13.8.2Apache Commons Net
Die Bibliothek Apache Commons Net (http://commons.apache.org/net/) implementiert bekannte Internetprotokolle. Sie ist auf einem viel höheren Abstraktionsniveau angesiedelt als der HTTP-Client und unterstützt folgende Protokolle:
FTP (File Transfer Protocol): Dient der Dateiübertragung von und zu jedem beliebigen Rechner im Internet.
TFTP (Trivial File Transfer Protocol): einfache Variante von FTP ohne Sicherheitsprüfung
NNTP (Network News Transfer Protocol): Protokoll zum Versenden und Empfangen von Nachrichten in Diskussionsforen
SMTP (Simple Mail Transfer Protocol): Standardprotokoll, mit dem E-Mails auf einen Server übertragen werden
POP3 (Post Office Protocol, Version 3): bisheriges Standardprotokoll, mit dem E-Mails vom Server abgeholt werden
Telnet (Terminalemulation): Bietet die Möglichkeit, sich in spezielle Rechner einzuloggen.
Finger, Whois: Informations- und Nachschlagedienste, um Informationen über Personen einzuholen
Daneben unterstützt die Bibliothek auch die BSD-R-Kommandos rexec, rcmd/rshell und rlogin sowie rdate. Für SMTP und POP3 ist die JavaMail API im Allgemeinen besser geeignet.