Attenzione: Questo è un articolo tecnico dedicato alla programmazione iPhone, quindi per programmatori che conoscono l’SDK della Apple e il linguaggio di programmazione Objective-C.
Questo è un semplice esempio di come sia possibile inviare e ricevere dati utilizzando la classe NSURLConnection.
Innanzitutto è necessario costruire la richiesta. Se non avete bisogno di inviare dati nell’URL copiate il seguente codice:
NSString *myURLString = @”http://google.com/”;
NSURLRequest *request = [ [ NSURLRequest alloc ] initWithURL: [ NSURL URLWithString: myURLString ] ];
Se avete bisogno di impostare il modo di utilizzo della cache e un intervallo di tempo entro il quale la quale la connessione andrà in timeout utilizzate il metodo di NSURLRequest -initWithURL: cachePolicy: timeoutInterval:
Se invece la vostra richiesta richiede l’invio di dati nell’URL è necessario utilizzare la classe NSData ed aggiungerla ad un oggetto di tipo NSMutableURLRequest.
Codice:
NSString *myRequestString = @”&myVariable1=Apple%20Blog&myVariable2=appleblog”;
NSData *myRequestData = [ NSData dataWithBytes: [ myRequestString UTF8String ] length: [ myRequestString length ] ]
NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString: @”http://www.google.com/” ] ];
[ request setHTTPMethod: @”POST” ];
[ request setHTTPBody: myRequestData ];
Una volta che la richiesta è stata creata, è necessario inviarla e attendere la risposta.
Codice:
NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil ];
L’oggetto returnData di tipo NSData contiene a questo punto i dati richiesti. Se la connessione va in timeout o si verificano alcuni errori nil sarà la risposta.
Nota: -sendSynchronousRequest: returningResponse: error: si bloccherà fino a che la richiesta non va in timeout o ritornano i dati richiesti. Se volete evitare di interrompere il funzionamento dell’interfaccia durante una chiamata di questo tipo vi consigliamo di eseguire il codice all’interno di un thread secondario.