NSURLConnection: esempio d’uso

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
}

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
                   <code></code> // blocco generico
                   [cc_actionscript][/cc_actionscript] // Actionscript
                   [cc_actionscript3][/cc_actionscript3] // Actionscript 3
                   [cc_css][/cc_css] // CSS Style Sheet
                   [cc_html][/cc_html] // HTML
                   [cc_js][/cc_js] // Javascript
                   [cc_objc][/cc_objc] // Objective-C
                   [cc_php][/cc_objc] // PHP
                   [cc_sql][/cc_sql] // SQL