2011-10-26 9 views
8

Estoy usando RestKit para conectarme a nuestros Servicios de datos WCF.Ignorar respuesta al hacer un postObjeto en RestKit para iOS

Tengo problemas para agregar una entidad que utiliza la función postObject de RKObjectManager debido a problemas de asignación de respuesta.

Cuando se agrega una entidad, WCF Data Services devuelve un código de estado 201 y la entidad recién agregada (como respuesta).

¿Es posible ignorar la respuesta y simplemente usar el código de estado devuelto para verificar si la adición tuvo éxito?

Ponnu

Respuesta

1

por qué le gustaría hacer caso omiso de la entidad que acaba de agregar devuelve desde el servidor? La asignación de ese resultado es útil para mantener sincronizada su representación local con la del servidor. Es posible que el servidor haya sobrescrito algún campo de su objeto como el ID del objeto y desea realizar un seguimiento de este.

Si tiene un error de asignación, es probable que se deba a que la respuesta a la acción POST devuelve una representación de su objeto que difiere de la que se devuelve con un GET. ¿Ha intentado utilizar:

- (RKObjectLoader*)postObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate

lugar y especificar una asignación más adecuada para los datos devueltos?

0

El problema aquí puede ser alterar el servicio REST, por lo que una solución simple sería ignorar la devolución de llamada a didFailWithError en el caso de llamadas postObject a una determinada ruta de recursos.

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error { 
if ([objectLoader wasSentToResourcePath:@"/rest/api/returns/201" method:RKRequestMethodPOST] && [[objectLoader response] statusCode]==201) { 
    NSLog(@"Object created"); 
} else { 
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Communication error" 
                 message:[NSString stringWithFormat:@"Received status code %d: %@",                        objectLoader.response.statusCode,                        error.localizedDescription]               delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
} 
0

Cree un RKObjectMapping trivial que no se preocupe por ningún parámetro en respuesta.

[RKObjectMapping mappingForClass: [NSNull class]]; 
Cuestiones relacionadas