2014-12-16 4 views
0

По-видимому, сервер не может понять мой словарь с массивом. Я написал этуНевозможно опубликовать словарь с массивом с AFNetworking

NSURL *url = [NSURL URLWithString:@"http://"]; 
self.manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url]; 

self.manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments]; 
[self.manager setResponseSerializer:responseSerializer]; 
self.manager.responseSerializer.acceptableContentTypes = [self.manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"]; 

NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys: 
          [SOUser sharedManager].id, @"id", 
          @"vk", @"socialId", 
          [SOUser sharedManager].firstName, @"firstName", 
          [SOUser sharedManager].lastName, @"lastName", 
          [SOUser sharedManager].sex, @"gender", 
          [SOUser sharedManager].friends, @"friends", nil]; 

[self.manager POST:@"api/user/" 
    parameters:parameters 
     success:^(AFHTTPRequestOperation *operation, id responseObject) { 
      //NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]); 
      NSLog(@"OPERATION = %@", operation); 
      NSLog(@"%@", operation.responseString); 
      NSLog(@"JSON: %@", responseObject); 
      NSLog(@"Token = %@", [responseObject objectForKey:@"token"]); 
      [SOUser sharedManager].legendaryToken = [responseObject objectForKey:@"token"]; 
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Error: %@", error); 
      NSLog(@"message: %@", [operation.responseObject objectForKey:@"message"]); 
      NSLog(@"operation: %@", [operation.responseObject objectForKey:@"errors"]); 
      NSDictionary *ac = [operation.responseObject objectForKey:@"errors"]; 
      NSLog(@"%@", [ac objectForKey:@"email"]); 
      NSString *fg = [ac objectForKey:@"email"]; 
      NSLog(@"%@", fg); 
     }]; 

Где [SOUser sharedManager].friends является NSMutableArray:

for (int i = 0; i < 25; i++) { 
    [self.friends addObject:[NSString stringWithFormat:@"%i", i]]; 
} 

А на сервере я получать все мои данные, но вместо моего массива с моим номера сервера печати строка «массив»? Что это может быть?

Мой JSON:

JSON: { 
    email = "<null>"; 
    "fb_friends" = "<null>"; 
    "fb_id" = "<null>"; 
    firstName = Sergey; 
    gender = 2; 
    id = 17; 
    lastName = Oleynich; 
    phone = "<null>"; 
    token = 6990b71a61411d9d038dad1e2a54dd9f; 
    "vk_friends" =  (
     0, 
     1, 
     2, 
     3, 
     4, 
     5, 
     6, 
     7, 
     8, 
     9, 
     10, 
     11, 
     12, 
     13, 
     14, 
     15, 
     16, 
     17, 
     18, 
     19, 
     20, 
     21, 
     22, 
     23, 
     24 
    ); 
    "vk_id" = 3; 

сервер

JSON : Id:17 
vk_id:3 
fb_id:NULL 
firstName:Sergey 
lastName:Oleynich 
gender:2 
email:NULL 
vk_friends:Array 
+0

1. Это семантика, но то, что вы называете своим «JSON», на самом деле не является JSON. Это то, что вы получаете, когда NSLog-объект, из которого будет создан JSON. 2. Вы показываете нам, что получил сервер, но вы не показываете нам, что вы создали этот вывод. Во всяком случае, факт, что 'vk_friends' является' Array', обнадеживает. Интересно, проблема в том, как вы рассматриваете/показываете запрос на сервере, а не проблему с самим запросом. Покажите нам, как вы создали окончательный вывод «сервер». – Rob

+0

@Rob Покажите нам, как вы создали этот окончательный вывод «сервер». Я не понимаю, что я должен показать? Вы имеете в виду, что именно я отправляю на сервер? Как я могу это показать? –

+0

Нет, мой вопрос заключается в том, как вы выводите последний блок вывода в конце исходного вопроса. Если я правильно понял, вы спрашиваете: «Почему я вижу« Массив »для моего ключа« vk_friends »? Ну, мы должны увидеть, как вы создали этот вывод. Ваш исходный вопрос подразумевает, что вы считаете, что проблема лежит в исходном запросе, и я предлагаю, чтобы запрос был прав, но скорее это может быть просто вопрос о том, как вы выводите 'vk_friends', что я не могу ответить до тех пор, пока вы покажете нам, как вы создали этот окончательный вывод «сервер». – Rob

ответ

0

Я хотел бы предложить, что ваш запрос может быть хорошо, но проблема может быть просто способ, которым вы показываете на «сервер» значения в конце вашего вопроса. Например, если ваш сервер был написан на PHP, а вы echo - переменная, которая содержит массив vk_friends, он просто отобразит «Массив».

Если вы хотите, чтобы отобразить массив в PHP, вы могли бы сделать что-то вроде:

foreach ($vk_friends as $vk_friend) { 
    echo $vk_friend . "\r\n"; 
} 

Честно говоря, если ваш сервер реагирует на приложение, вы, вероятно, использовать json_encode, во всяком случае, и это точка спорная. Но, возможно, именно поэтому вы видите «Массив» в своем выходе.

+0

Я делаю клиент. Сервер делает других людей, и они говорят, что на сервере они видели только массив. Вот почему я подумал, что, может быть, мой пост был неправильным. Пожалуйста, дайте мне совет, как я могу увидеть свою исходную выходную информацию (в json), используя NSLog в моем коде. –

+0

Ваш запрос клиента выглядит мне хорошо, но реальный тест - посмотреть запрос в таком инструменте, как [Charles] (http://charlesproxy.com) и посмотреть JSON, который был отправлен при запуске приложения на симуляторе , Держу пари, вы видите список друзей. Если это так, поделитесь JSON с друзьями вашего сервера и посмотрите, что они говорят. Если нет, обновите свой вопрос с помощью JSON. Вопрос заключается в том, является ли JSON действительным или нет, или существует ли какая-то невиновная неподходящая связь с вами и командой сервера. – Rob

Смежные вопросы