forma correcta de incrustar base64 en la carga útil de json con afnetworking

Gracias de antemano por cualquier ayuda. Estoy trabajando con un service web que solo toma cargas útiles de json y este service está configurado para enviar fotos.

Así que estoy tratando de averiguar la forma correcta de incrustar una image en una carga útil json. Este es mi enfoque.

//convert image to nsdata NSData *originalPhoto = UIImageJPEGRepresentation(self.photo.image,.9); //convert the data to a base64 string using NSData+Base64 category extension (Matt Gallagher version) NSString *base64photoString = [originalPhoto base64EncodedString]; //set the string in a NSDictionary [info setValue:base64photoString forKey:@"data"]; //then pass it to AFNetworking using the httpClient 

todo parece funcionar y me sale la carga json. Nota: la cadena bas64 termina en el cuerpo de la publicación.

¿Alguien está al tanto de usar este enfoque si una URI necesita estar incrustada frente a los datos, algo así: "file": "datos: image / jpg; base64, [base64 cadena]" – intenté esto pero no obtuve cualquier amor del service web, sin embargo, puedo tener la syntax incorrecta.

Sin embargo, el service web no le gusta.

Para verificar la encoding, corté la cadena generada de nslog y la pegué en un website del decodificador en línea y vuelve a crear la image original, por lo que parece que los datos se codificaron correctamente.

Es un par de días antes de que pueda hablar con el administrador del server web, así que solo estoy buscando la verificación de que este es un enfoque correcto o por favor señala cualquier defecto. No puedo cambiar el service a una forma codificada de varias partes, estoy estancado con este enfoque.

gracias de nuevo

Entendí esto y pensé que le daría la respuesta en caso de que alguien más tuviera un problema similar.

escenario: publica una carga útil de JSON con foto incrustada como base64string.

Encontré una versión bifurcada de base64 aquí https://github.com/l4u/NSData-Base64.git . En se incluye un método adicional del trabajo original que Matt Gallagher publicó alnetworkingedor del año 2009 llamado: base64EncodedStringWithSeparateLines: SÍ – que hizo el truco.

 //use it like this: NSData *originalPhoto = UIImageJPEGRepresentation(self.photo.image,1); NSString *base64PhotoString = [originalPhoto base64EncodedStringWithSeparateLines:YES]; //stuff it in a dictionary like this: NSMutableDictionary *info = [NSMutableDictionary dictionary]; [info setValue:base64PhotoString forKey:@"sFileData"]; //send it using AFNetworking like this: [[ClientInterface shanetworkingInstance] postPath:submitPhoto parameters:info success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"success!"); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error:%@",error); }];