Interazione con i web services in Titanium

admin/ Novembre 1, 2016/ Blog Tecnico, Mobile

L’SDK di Titanium Appcelerator mette a disposizione la classe client HTTP che implementa le specifiche XMLHttpRequest. Titanium.Network.HTTPClient, questo il suo nome, è in grado di effettuare richieste HTTP sia sincrone che asincrone.

La struttura di una richiesta HTTP, effettuato con HTTPClient, è la seguente:

// url di un servizio di esempio var url = “http://mywebservice/test.asmx”;

//1) creazione dell’oggetto var client = Ti.Network.createHTTPClient({

// callback chiamata quando abbiamo dei dati di risposta onload : function(e) {

/* callback */},

// callback chiamata quando c’è un errore
onerror : function(e) {

/* callback*/

},
});
// 2) definizione della richiesta
client.open(“GET”, url);
// 3) invio della richiesta
client.send();

Durante la creazione dell’oggetto HTTPClient è necessario definire le funzioni di callback onload e onerror, necessarie per gestire sia la ricezione dei dati che la notifica di un errore. Il client è in grado di gestire anche altri eventi, per esempio il progresso dell’upload e del download di file o il cambio di stato, e per ognuno di questi eventi deve essere definita una callback apposita da assegnare, rispettivamente, alle proprietà onsendstream, ondatastream e onreadystatechange.Non essendo un oggetto dell’interfaccia utente, HTTPClient non ha una sua sintassi XML da definire nella view.

Alloy fornisce una struttura dati per memorizzare variabili globali, cioè accessibili in qualunque parte del codice senza dover dichiarare o importare moduli. Questa struttura si chiama Alloy.Globals, che come il nome lascia intendere è accessibile globalmente in tutto il progetto ed è ideale per memorizzare variabili e funzioni globali.

Il file dove andremo a definire la variabile globale Alloy.Globals.url è app/alloy.js, perchè il suo contenuto sarà eseguito prima di qualsiasi altro controller, e questo lo rende il punto migliore in cui inizializzare gli oggetti globali.

Alloy.Globals.url = “http://mywebservice/test.asmx”;
Una volta definita l’URL del servizio in alloy.js, passiamo a modificare il file index.js creando l’oggetto HTTPClient e definendo le callback onload e onerror. Fatto ciò, eseguiremo la richiesta HTTP GET verso l’URL che abbiamo appena definito in alloy.js.

var client = Ti.Network.createHTTPClient({onload : function(e) {
var json = JSON.parse(this.responseText);
onSuccess(json);
},

onerror : function(e) {
Ti.API.debug(e.error);
alert(‘error ‘ + JSON.stringify(e.error));
},
timeout : 5000 // in milliseconds

});

La callback onload viene richiamata alla ricezione dei dati, contenuti in this.responseText.

Leave a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

* Questa casella GDPR è richiesta

*

Accetto

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>