Pregunta

Estoy seguro de que soy denso de ser nuevo en la programación de iOS, pero estoy teniendo problemas con el trabajo de AfNet. Específicamente, cuando lo uso, no pasa nada. No recibo ninguna respuesta del servidor, pero tampoco recibo ningún error. Todas las propiedades terminan nulas.

Aquí está mi solicitud:

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]];

Esto parece funcionar a medida que obtengo mi resultado esperado si simplemente paso la solicitud a un Uiwebview o si uso esto:

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

En otras palabras, la publicación es exitosa y JSON es devuelta.

Pero, ninguno de estos hace nada (sin error, sin respuesta):

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

Ni siquiera los huesos de Bare intentan funcionar:

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

Obviamente, estoy haciendo algo terriblemente mal. Pero, las fallas silenciosas están dificultando esto.

Gracias por cualquier ayuda.

EDITAR:

No importa ... soy denso.

No estaba creando el NsoperationQueue.

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

Sin embargo, todavía no estoy claro por qué las propiedades no se están configurando. Pero parece que al menos tengo datos.

¿Fue útil?

Solución

Crear el objeto de operación de solicitud no inicia automáticamente la solicitud. Como señalaste en tu edición, depende de ti enojarlo en un NSOperationQueue o hacer [operation start] a mano.

Le recomendaría que se comunique con su servidor usando AFHTTPClient, dado que eso proporciona un mecanismo incorporado para establecer correctamente su cadena de consulta o cuerpo HTTP en función de los parámetros que pasa. Consulte el cliente de ejemplo de API de Gowalla en el código de muestra y el método AFHTTPClient -postPath:parameters:success:failure.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top