Domanda

Sono sicuro di essere denso di essere nuovo alla programmazione iOS, ma sto avendo problemi con AFNetworking. In particolare, quando lo uso, non succede nulla. Non ricevo alcuna risposta dal server, ma non ho nemmeno errori. Tutte le proprietà finiscono null.

Ecco la mia richiesta:

NSMutableDictionary *requestArray = [NSMutableDictionary new];
[requestArray setObject: @"getBio"
                 forKey: @"action"];
[requestArray setObject: @"1"
                 forKey: @"bioID"];

NSError * error = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:requestArray options:0 error:&error];

NSString *myRequestString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

NSMutableURLRequest *request = [ [ NSMutableURLRequest alloc ] initWithURL: [ NSURL URLWithString: @"http://localhost/LP/JSON/Secure/bio.php" ] ]; 

[ request setHTTPMethod: @"POST" ];
[ request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
[ request setHTTPBody: [myRequestString dataUsingEncoding:NSUTF8StringEncoding]];

Questo sembra funzionare perché ottengo il risultato previsto se approvo semplicemente la richiesta in un UiWebView o se lo uso:

NSURLResponse *response;
NSError *err;
NSData *returnData = [ NSURLConnection sendSynchronousRequest: request returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[returnData bytes]];
NSLog(@"responseData: %@", content);

In altre parole, il post ha successo e JSON viene restituito.

Ma nessuno di questi fa nulla (nessun errore, nessuna risposta):

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

Né nemmeno le ossa nude tentano funzionano:

AFURLConnectionOperation *operation = [[AFURLConnectionOperation alloc] initWithRequest:request];

Ovviamente, sto facendo qualcosa di orribilmente sbagliato. Ma i fallimenti silenziosi stanno rendendolo difficile da capire.

Grazie per qualsiasi aiuto.

MODIFICARE:

Non importa .. Sono denso.

Non stava creando NsOperationQueue.

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];

Anche se, non sono ancora chiaro perché le proprietà non vengano impostate. Ma sembra che io abbia almeno dati.

È stato utile?

Soluzione

La creazione dell'oggetto operativo di richiesta non inizia automaticamente la richiesta. Come hai sottolineato nella tua modifica, spetta a te accusarlo in un NSOperationQueue o fare [operation start] manualmente.

Consiglierei di comunicare con il tuo server utilizzando AFHTTPClient, poiché ciò fornisce un meccanismo integrato per impostare correttamente la stringa di query o il corpo HTTP in base ai parametri in cui si trasferisce. Vedere il client di esempio API Gowalla nel codice di esempio e il metodo AFHTTPClient -postPath:parameters:success:failure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top