2013-05-17 11 views
11
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:///]; 
NSURLRequest *req = [[NSURLRequest alloc]initWithURL:url]; 
NSURLConnection *con = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:YES]; 

Nel mio progetto ho usato sendSynchronousRequest su NSURLConnection. A volte mi fa schiantare.asincrono esempio di richiesta

Quindi ho convertito questo codice in AsynchronousRequest. Non ho trovato il codice adatto.

Qualcuno mi fornisce il collegamento o il codice postale adatto al mio codice. Qualunque sia l'hep sarà apprezzato.

+2

È molto probabile che avere questa domanda chiuso in quanto troppo aperta e localizzato. Ti suggerisco di descrivere cosa stai cercando di fare e cosa hai provato e perché non funziona in modo che le persone possano rispondere direttamente alla richiesta. Ci sono molte persone disponibili e in grado di aiutarti, ma le domande più specifiche che indicano ciò che hai provato e il motivo per cui non funziona tendono a essere quelle che ottengono le risposte migliori. – gaige

+0

@gaige Mi piace come non è stato chiuso :) – Supertecnoboff

risposta

20

Ci sono un paio di cose che potresti fare.

  1. È possibile utilizzare sendAsynchronousRequest e gestire il blocco di richiamata.
  2. È possibile utilizzare la libreria AFNetworking, che gestisce tutte le richieste in modo asincrono. Molto facile da usare e configurare.

codice per l'opzione 1:

NSURL *url = [NSURL URLWithString:urlString]; 
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url]; 
NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
    if (error) { 
    //NSLog(@"Error,%@", [error localizedDescription]); 
    } 
    else { 
    //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); 
    } 
}]; 

codice per l'opzione 2:

Si potrebbe voler scaricare la libreria & includerlo nel progetto prima. Quindi fai quanto segue. È possibile seguire il post su creazione here

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]); 
} failure:nil]; 

[operation start]; 
+1

blocca l'interazione dell'utente quando la rete è lenta? – Xcode

+0

Ho usato la tua opzione 1. Come gestirlo non è un successo? – Xcode

+0

È possibile utilizzare l'errore NSError * nel blocco completionHandler per gestire eventuali errori. – Harish