2014-12-16 2 views
0

분명히 서버가 배열로 사전을 인식 할 수 없습니다. 난 내 번호 서버 인쇄 문자열 "배열"로 대신 내 배열 내 모든 데이터를 수신AFNetworking이 포함 된 배열로 사전을 게시 할 수 없습니다.

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

그리고에 서버 : 나는이

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].friendsNSMutableArray입니다

을 썼다? 그것은 무엇 일 수 있는가?

내 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이 아닙니다. JSON이 생성 될 객체를 NSLog 할 때 얻을 수있는 것입니다. 2. 서버가받은 것을 우리에게 보여 주지만, 출력을 생성 한 것을 우리에게 보여주지는 않습니다. 어떤 것이 든,'vk_friends'가'Array'라는 사실은 고무적입니다. 질문 자체가 문제가 아니라 서버에서 요청을 검사/표시하는 방법인지 궁금합니다. 최종 "서버"출력을 어떻게 생성했는지 보여주십시오. – Rob

+0

@Rob 마지막 "서버"출력을 어떻게 생성했는지 보여주십시오. 내가 무엇을 보여야하는지 이해가 안되니? 정확히 내가 서버에 보내는 것을 의미합니까? 나는 그것을 어떻게 보여줄 수 있는가? –

+0

아니요, 제 질문은 원래 질문 끝에 출력 마지막 블록을 출력하는 방법입니다. 내가 올바르게 이해하면, "왜 내 'vk_friends'키에 대해 'Array'가 보이나요?" 글쎄, 우리는 당신이 그 결과물을 어떻게 생성했는지를 알아야합니다. 원래의 질문은 당신이 원래의 요청에 문제가 있다고 생각한다는 것을 암시하며, 요청이 잘 될 것이라고 제안하지만, 오히려 단지 당신이'vk_friends'를 어떻게 출력하고 있는지, 나는 대답 할 수 없다. 마지막 "서버"출력을 어떻게 생성했는지 보여줍니다. – Rob

답변

0

나는 당신의 요청이 잘 될 수 있음을 제안하지만, 문제는 간단하게하는 당신이 "서버"를 표시하는 방법이 될 수 있음 귀하의 질문 끝에 가치. 예를 들어 서버가 PHP로 작성되었고 echo의 배열을 보유하는 변수가 vk_friends 인 경우 단순히 "Array"가 표시됩니다. 당신이 PHP의 배열을 표시하려면

, 당신은 같은 것을 할 거라고 : 서버가 응용 프로그램에 응답 한 경우 솔직히

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

을, 당신은 아마 json_encode, 어쨌든,이를 사용하십시오 요점은 논쟁 거리다. 그러나 이것은 현재 출력에서 ​​"배열"을보고있는 이유 일 수 있습니다.

+0

나는 클라이언트를 만든다. 서버는 다른 사람들을 만들고 서버에서는 어레이 만 보았다고합니다. 그래서 내 게시물이 잘못되었을 수도 있다고 생각하는 이유입니다. 제 코드에서 NSLog를 사용하여 원본 출력 정보 (json)를 어떻게 볼 수 있습니까? –

+0

클라이언트 요청이 괜찮은 것처럼 보이지만 실제 테스트는 [Charles] (http://charlesproxy.com)와 같은 도구에서 요청을보고 시뮬레이터에서 앱을 실행할 때 전송 된 JSON을 확인하는 것입니다. . 친구들 목록을 볼 수있을 것입니다. 그렇다면 JSON을 서버 친구들과 공유하고 그들이 말하는 것을 확인하십시오. 그래도 질문이 없으면 JSON으로 질문을 업데이트하십시오. 문제는 JSON의 유효성 여부 또는 귀하와 서버 팀 간의 무분별한 오해가 있는지 여부입니다. – Rob

관련 문제