2009-11-16 15 views
8

Implementiamo un client REST su JRE 1.4.Usa HTTPClient o HttpUrlConnection?

Sembra che due buone opzioni per un framework REST client siano HttpClient e HttpUrlConnection.

C'è un motivo per utilizzare HttpClient su HttpUrlConnection di JRE?

+0

Tale confronto è in realtà guardando innovazioni HttpClient, non ha nulla a fare con Apache HttpClient afaik – objects

+0

Grazie oggetti .. rimosso link. –

risposta

1

Nella mia esperienza HttpClient è leggermente più semplice e intuitivo da usare rispetto all'utilizzo di HttpUrlConnection, ma penso che sia una decisione molto soggettiva e YMMV.

1

Vorrei andare con la versione JRE solo così avrei una dipendenza in meno da spedire in giro.

+1

Questo confronto sembra un po 'datato – jitter

+2

Alcuni di noi non hanno il lusso di usare le ultime versioni di ** qualsiasi cosa ** :-( –

0

HttpUrlConnection è facile da gestire. Le implementazioni REST sono abbastanza semplici.

Anche se è necessario considerare l'intero ambiente su questa implementazione e verificare cosa funzionerà meglio per voi.

2

Lo Restlet Framework dispone inoltre di un'API che funziona sia sul lato server che sul lato client. Supportiamo connettori client collegabili, sfruttando HttpURLConnection o Apache HTTP Client o il nostro client HTTP interno.

La nostra classe ClientResource fornisce un'API client HTTP di livello superiore, con funzionalità come il reindirizzamento automatico, la conversione trasparente tra oggetti e rappresentazioni, la negoziazione del contenuto e altro.

Con i migliori saluti,

Jerome LOUVEL

Restlet ~ fondatore e sviluppatore di piombo ~ http://www.restlet.org

Noelios Technologies ~ co-fondatore ~ ​​http://www.noelios.com

+0

Siamo su 1.4 - Restlet funziona su 1.4? –

+0

@Marcus: Sì, lo sto facendo, sto usando il client di Restlet proprio adesso in Java 1.6 ed è un sogno. (Lo abbiamo configurato per sedersi sopra Apache HTTP Client, che è molto meglio di java.net.HttpUrlConnection.) –

4

ti darò un singolo, concreto motivo per favorire l'HTTPClient di Apache rispetto all'implementazione JDK: il HttpUrlConnection di JDK non supporta i timeout *, fa HTTPClient di Apache.

Le applicazioni devono sempre essere in grado di impostare i timeout quando si chiama in altri sistemi (database, servizi remoti, il proprio server backend, ...).

* Questo problema è stato risolto in Java 1.5; Timeout di supporto Java 1.5 e versioni successive in HttpUrlConnection.

+7

Non vero! Questo problema è stato risolto in Java 1.5. –

+0

Sono stato corretto. Buono a sapersi (è sulla classe URLConnection). – SteveD

+0

Buon punto. Siamo su 1.4 quindi questo sembra del tutto pertinente. –

4

Vorrei raccomandare Jakarta Commons Client HTTP su java.net.HttpUrlConnection in quanto è più maturo e ha un richer feature set. Ad esempio, è possibile chiedere di impostare un pool di connessioni multi-threaded (vedere MultiThreadedHttpConnectionManager) e ha il supporto completo per tutti i metodi HTTP (GET, PUT, POST, DELETE, OPTIONS, TRACE).

1

... httpclient non supporta/autenticazione NTLM Kerberos per i proxy, ecc ... HttpURLConnection di java farà l'autenticazione fuori dalla scatola ...