2012-12-06 7 views
1

Je travaille sur une application dans laquelle je dois envoyer deviceToken et uuid au serveur au format JSON comme: "regid":"x1y2z3","uuid":"1a2b3c" comment puis-je stocker les NSString s en NSData dans ce format et l'envoyer au serveur?données JSON au serveur

regid chaîne est comme x1y2z3 et uuid chaîne est comme 1a2b3c.

mon code:

PushNotification* pushHandler = [self.viewController getCommandInstance:@"PushNotification"]; 
[pushHandler didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 

NSString *deviceT = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
NSString *tkStr = [[NSString alloc]initWithData:deviceToken encoding:NSUTF8StringEncoding]; 
tkStr = [deviceT stringByReplacingOccurrencesOfString:@" " withString:@""]; 
NSLog(@"Device Token = %@",tkStr); 
//UUID 
CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault); 
NSString *uuidStr = (NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid); 
CFRelease(uuid); 
NSString *finalUIDstr = [uuidStr stringByReplacingOccurrencesOfString:@"-" withString:@""]; 
NSLog(@"UUID = %@",finalUIDstr); 
NSArray *keysArray = [NSArray arrayWithObjects:@"regid", @"uuid", nil]; 
NSArray *objectArray = [NSArray arrayWithObjects:tkStr,finalUIDstr, nil]; 
//Dictionary 

NSDictionary *jsonDict = [NSDictionary dictionaryWithObjects:objectArray forKeys:keysArray]; 

Répondre

2

Si vous voulez générer cette chaîne JSON, vous pouvez construire votre dictionnaire (ce qui est une façon de faire plus concis que Xcode 4.5 plutôt que de construire ces deux tableaux, puis les combiner dans un dictionnaire):

NSDictionary *dictionary = @{@"regid":tkStr,@"uuid":finalUIDstr}; 

Et puis Générez votre chaîne JSON:

NSError *error; 
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary 
               options:0 
               error:&error]; 
+0

le serveur accepte les données dans '[ "regid": "x1y2z3", "uuid": "1a2b3c"]' format, mais quand je l'ai 'résultat NSLog' est comme 'JSON DATA = <7b227265 67696422 3a223831 63666131 38343236 61366363 64333666 62633132 64376361 65663734 37633963 30333439 6 5316163 61333064 33633461 37326330 36636165 36613238 6231222c 22757569 64223a22 38433135 45363831 45434643 34363633 39333644 34334541 42343036 35444641 227d> ' est-ce acceptable? –

+0

Oui, quand vous connectez un 'NSData', il vous montre les codes. Si vous voulez voir la représentation 'NSString' de ces données, regardez' [[NSString alloc] initWithData: encodage des données: NSUTF8StringEncoding] '. – Rob

+0

merci cela a fonctionné, mais je suppose qu'il ya un problème côté serveur 'ne peut pas convertir D2655594D8B84D7E9B73130D340D9A94' à long valeur ' –

1

Convertir le NSDictionary à JSON (ou NSJSONSerialization SBJson) et POST au serveur comme application/JSON.

Questions connexes