NSURLConnection permette di eseguire una connessione cotrollata verso un server remoto. Per utilizzarlo basta:
1 2 3 4 5 6 7 8 9 10 11 | // Gli oggetti sufficienti per eseguire una NSURLConnection NSURLConnection *urlConnection; NSMutableData *mutableData; // ... NSString *urlString = @"http://www.miodominio.com/documento.txt"; NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString: urlString]]; // Il delegato risponderà agli stati della connessione urlConnection = [[NSURLConnection alloc] initWithRequest: urlRequest delegate:self]; |
Ecco i metodi delegati per controllare lo stato della connessione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <span id="more-3353"></span> // Start connection and download - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { // creo il contenitore dei dati mutableData = [[NSMutableData data] retain]; } // I pacchetti (chunck) vengono accodati - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [mutableData appendData:data]; } // Errore - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { urlConnection = nil; } // Connessione terminata con successo - si può elaborare il contenuto // precedentemente accodato in mutableData: in questo esempio si presume // che il contenuto sia testuale - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSString *subString; NSMutableString *mutableString = [[NSMutableString alloc] initWithData:mutableData encoding: NSASCIIStringEncoding]; // Elaborazione [mutableString release]; } |
Se volessimo caricare un’immagine, il codice sarebbe identico tranne che per:
1 2 3 4 5 6 7 8 9 | NSString *urlString = @"http://www.miodominio.com/immagine.png"; // ... - (void)connectionDidFinishLoading:(NSURLConnection *)connection { // Set appIcon and clear temporary data/image UIImage *image = [[UIImage alloc] initWithData: mutableData]; // eventuali elaborazioni aggiuntive } |









7
Non ci sono commenti per questo Post
Lascia un commento