Apache HttpClient con Java

Recentemente ho avuto la necessità di collegarmi a dei servizi RESTful per testare un servizio Web esposto tramite API. Avendo bisogno di un framework per la connessione e lo scambio dati HTTP, dopo una valutazione di diverse soluzione possibili la mia scelta è ricaduta su Apache HttpClient.

Il framework è davvero completo, intuitivo e semplice da utilizzare. Anche la gestione dei cookie è perfettamente supportata e automatizzata per quanto riguarda i comportamenti default. Si presta molto bene inoltre per la gestione degli errori HTTP standard, che possono essere gestiti con delle eccezioni generate automaticamente oppure gestiti manualmente facendosi restituire il codice errore ed implementando un comportamento custom.

Ecco il codice necessario per una semplice GET:

String host = "www.example.com";
String path = "/service";
HttpClient httpclient = new DefaultHttpClient();
// GET parameters
List<NameValuePair> qparams = new List<NameValuePair>();
// set custom header info
ArrayList<Header> headersList = new ArrayList<Header>();
headersList.add(new BasicHeader("User-Agent", "Custom"));
headersList.add(new BasicHeader("Accept-Language", "en-US"));
Header[] headers = new Header[headersList.size()];
headers = headersList.toArray(headers);
// set proxy info
if(proxy_address != null)
{
	HttpHost proxy = new HttpHost(proxy_address, proxy_port);
	httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
}
try
{
	URI uri = URIUtils.createURI("http", host, -1, path,
			URLEncodedUtils.format(qparams, "UTF-8"), null);
	HttpGet httpget = new HttpGet(uri);
	httpget.setHeaders(headers);

	HttpResponse response = httpclient.execute(httpget);
	statusCode = response.getStatusLine().getStatusCode(); // HTTP status code
	HttpEntity resp_entity = response.getEntity();
	responseBody = EntityUtils.toString(resp_entity); // body as String object
}
finally
{
	httpclient.getConnectionManager().shutdown();
}
Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...