Use HTTPClient ou HttpUrlConnection?

Estamos implementando um cliente REST no JRE 1.4.

Parece que duas boas opções para um framework REST de cliente são HttpClient e HttpUrlConnection .

Existe uma razão para usar o HttpClient através do HttpUrlConnection do JRE?

Eu recomendaria o Jakarta Commons HTTP Client sobre java.net.HttpUrlConnection, pois é mais maduro e tem um conjunto de resources mais sofisticado . Por exemplo, você pode pedir para configurar o pool de conexões multi-threaded (consulte MultiThreadedHttpConnectionManager ) e ele tem suporte total para todos os methods HTTP (GET, PUT, POST, DELETE, OPTIONS, TRACE).

Eu darei a você uma razão única e concreta para favorecer o HTTPClient do Apache sobre a implementação do JDK: O HttpUrlConnection do JDK não suporta timeouts *, o HTTPClient do Apache.

Os aplicativos sempre devem ter a capacidade de definir tempos limites ao chamar outros sistemas (bancos de dados, serviços remotos, seu próprio servidor, …).

* Isso foi corrigido no Java 1.5; Tempo limite de suporte do Java 1.5 e superior no HttpUrlConnection.

O Restlet Framework também possui uma API que funciona tanto no lado do servidor quanto no lado do cliente. Oferecemos suporte a conectores cliente plugáveis, aproveitando o HttpURLConnection ou o Apache HTTP Client ou nosso próprio cliente HTTP interno.

Nossa class ClientResource fornece uma API de cliente HTTP de nível superior, com resources como redirecionamento automático, conversão transparente entre objects e representações, negociação de conteúdo e muito mais.

Cumprimentos,

Jerome Louvel

Restlet ~ Fundador e desenvolvedor líder ~ http://www.restlet.org

Noelios Technologies ~ Co-fundador ~ http://www.noelios.com

Na minha experiência, o HttpClient é um pouco mais fácil e intuitivo de usar do que usar o HttpUrlConnection, mas acho que é uma decisão muito subjetiva e o YMMV.

Eu iria com a versão do JRE só para ter uma dependência a menos.

… O httpclient não suporta autenticação kerberos / ntlm para proxies etc … A httpurlconnection do java fará autenticação fora da checkbox …

O HttpUrlConnection é fácil de manusear. As implementações do REST são bem simples.

Embora você deva considerar todo o ambiente sobre essa implementação e verificar o que funcionará melhor para você.