DevCorner: usiamo le API di OpenWeatherMap

Roberto Orgiu
Roberto Orgiu
DevCorner: usiamo le API di OpenWeatherMap

Nella scorsa puntata, abbiamo visto come poter controllare lo stato della nostra connessione, in modo da non cercare di caricare risorse quando non è presente il collegamento ad internet e, in questa stessa sede, andremo ad utilizzare le API di OpenWeatherMap per ottenere indicazioni in formato JSON sulla condizioni meteo della città in cui si trova il nostro utente.

LEGGI ANCHE: Creiamo un'app per la lettura dei Feed RSS

Iniziamo quindi a vedere come possiamo effettuare una richiesta dal nostro servizio di background, evitando di andare ad utilizzare librerie esterne, ma appoggiandoci solamente alle API di Android:

final String urlRequest = getString(R.string.weather_request_url, city);
mHttpClient = AndroidHttpClient.newInstance("Android");
HttpGet getRequest = new HttpGet(urlRequest);
try {
mHttpClient.execute(getRequest, new WeatherResponseHandler());
} catch (IOException e) {
onWeatherFailure("");
}

Proviamo ad analizzare insieme il codice: alla prima riga, richiamiamo dalle nostre risorse una stringa parametrizzata cui passeremo la città di cui ci interessa ricevere le informazioni, in modo da formare un URL pronto e finito per la richiesta.

Lo step successivo è inizializzare il client Http, di cui prenderemo una nuova istanza, specificando che ci stiamo connettendo da un dispositivo mobile attraverso il factory method newInstance(). Alla linea 3 creeremo invece la richiesta tramite l'URL dichiarato in precedenza, eseguendola poi alla riga 5 ed inviando il responso ad un oggetto di tipo WeatherResponseHandler.

Questo oggetto si occuperà solamente di eseguire queste poche righe di codice (per il momento):

mHttpClient.close();
onWeatherSuccess(EntityUtils.toString(httpResponse.getEntity()));

chiuderà quindi il client HTTP ed invierà la risposta (sotto forma di String) all'apposito metodo della nostra interfaccia.

Anche per questa settimana, abbiamo concluso il nostro appuntamento e vi invitiamo, oltre che a discutere nel forum, a dare un'occhiata ai sorgenti di questa puntata, facendo bene attenzione ad alcune istruzioni che abbiamo volontariamente lasciato in punti non proprio ottimali.