Я преобразовываю массив NSDictionaries в данные JSON со следующим …
Создайте мои данные …
NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init]; for (int i = 0; i < 2; i++) { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"MySong", @"title", @"MyArtist", @"artist", nil]; [arrayOfDicts addObject:dict]; } NSArray *info = [NSArray arrayWithArray:arrayOfDicts]; NSData* jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error];
затем отправьте так …
NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:jsonData forKey:@"songs"]; [request setDelegate:self]; request.tag = TAG_LOAD_SONGS; [request startAsynchronous];
Это отправляет NSData на мой сервер, но как я могу использовать его в php … На самом деле это просто куча случайных чисел, если я печатаю его с моего сервера, и я попытался использовать json_encode, но я не думаю, что это означало необработанные данные…
Любая помощь будет замечательной!
EDIT: Вот ответ php …
echo $_POST['songs']; <5b0a2020 7b0a2020 20202274 69746c65 22203a20 224d7953 6f6e6722 2c0a2020 20202261 72746973 7422203a 20224d79 41727469 7374220a 20207d2c 0a20207b 0a202020 20227469 746c6522 203a2022 4d79536f 6e67222c 0a202020 20226172 74697374 22203a20 224d7941 72746973 74220a20 207d0a5d>
Вот ответ на NSLoging в Xcode …
NSLog(@"Info: %@", info);
Info: ({artist = MyArtist; title = MySong;}, {artist = MyArtist; title = MySong;})
Оказывается, мне нужно было сделать это вот так:
Создать Мои данные:
NSMutableArray *arrayOfDicts = [[NSMutableArray alloc] init]; for (int i = 0; i < 2; i++) { NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: @"MySong", @"title", @"MyArtist", @"artist", nil]; [arrayOfDicts addObject:dict]; } NSArray *info = [NSArray arrayWithArray:arrayOfDicts];
И послал это так:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; // Start request NSURL *url = [NSURL URLWithString:@"http://www.mywebsite.com/index.php"]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:jsonString forKey:@"songs"]; [request setDelegate:self]; [request startAsynchronous];
Ключ должен был преобразовать информацию в NSData
, а затем в строку JSON, которую я отправил на свой сервер, а не просто отправку необработанных NSData
.
Спасибо всем за помощь!
<?php $array = json_decode($_POST['songs']); ?>
<?php $array = json_decode($_POST['songs']); ?>
должен работать.
Вы не можете отправить его таким образом. NSJSONSerialization предназначен для использования iOS. Это в основном плистика. Вам понадобится способ его декодирования на PHP, и я сомневаюсь, что он существует. Вместо этого вам нужно отправить строку JSON. Я не уверен, что вы подразумеваете под «листьями котировки вокруг заголовков». Что они там делают в первую очередь? Вы можете проверить исходную строку JSON здесь ?