Ios 使用AF2向服务器发送Json数组时出错

Ios 使用AF2向服务器发送Json数组时出错,ios,json,http-post,arrays,afnetworking-2,Ios,Json,Http Post,Arrays,Afnetworking 2,我正在尝试使用将Json数组发送到服务器。这是我的Json数组格式 { "friendList": [ {"id": 1, "username": "user1", "name":"person1", "friendUsername":"fUser1", "friendName":"fName1"}, {"id": 2, "username": "user2", "name":"person2", "friendUserID":"fUser2", "friendN

我正在尝试使用将Json数组发送到服务器。这是我的Json数组格式

{
    "friendList": [
      {"id": 1, "username": "user1", "name":"person1", "friendUsername":"fUser1", "friendName":"fName1"},
      {"id": 2, "username": "user2", "name":"person2", "friendUserID":"fUser2", "friendName":"fName2"},
      {"id": 3, "username": "user3", "name":"person3", "friendUserID":"fUser3", "friendName":"fName3"},...
    ]
}   
下面是我将Json发送到服务器的代码

    NSMutableArray *friendsArray = [NSMutableArray new];
    NSDictionary *params1 = @{@"id": @"1",
                             @"username":@"user1",
                             @"name":@"person1",
                             @"friendUsername":@"fUser1",
                             @"friendName":@"ffName1"};

    NSDictionary *params2 = @{@"id": @"2",
                             @"username":@"user2",
                             @"name":@"person2",
                             @"friendUsername":@"fUser2",
                             @"friendName":@"ffName2"};

    NSDictionary *params3 = @{@"id": @"3",
                             @"username":@"user3",
                             @"name":@"person3",
                             @"friendUsername":@"fUser3",
                             @"friendName":@"ffName3"};

    [friendsArray addObject:params1];
    [friendsArray addObject:params2];
    [friendsArray addObject:params3];


AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];


NSDictionary *parameters = @{@"friendsList":friendsArray};
NSLog(@"%@", parameters);

manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];

[manager POST:@"http://localhost:8080/RestWebServices/Rest/Post" parameters:parameters    success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
    NSLog(@"Error: %@", operation.response);
}];
我收到了此错误
error Domain=NSCocoaErrorDomain code=3840“操作无法完成。(Cocoa错误3840)。”(JSON文本没有以数组或对象开头,并且允许不设置片段的选项。)

我不知道我做错了什么。我的代码对我来说似乎是正确的。请帮忙

编辑:

这是我得到的日志

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x8b63c40 {NSDebugDescription=Invalid value around character 0.}
2014-01-09 21:57:25.497 ServerJsonParsingExample[1431:70b] status code = 400
2014-01-09 21:57:25.497 ServerJsonParsingExample[1431:70b] for operation: <NSHTTPURLResponse: 0x8e611e0> { URL: http://localhost:8080/RestfulWebServices/Rest/Seemo } { status code: 400, headers {
    Connection = close;
    "Content-Type" = "text/plain";
    Date = "Thu, 09 Jan 2014 16:27:25 GMT";
    Server = "Apache-Coyote/1.1";
    "Transfer-Encoding" = Identity;
} }
希望它能起作用

    AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:[NSURL urlWithString:@"http://localhost:8080/RestWebServices/Rest/Post"];
   [httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
   [httpClient setDefaultHeader:@"Accept" value:@"application/json"];    
    [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
    httpClient.parameterEncoding = AFJSONParameterEncoding;

    [httpClient postPath:nil parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {

            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

            }];

在我看来,您的代码似乎是正确的,而且您创建的JSON对象似乎非常正确。您是否检查了服务器在
响应对象中返回的内容。我猜
responseObject
不是有效的JSON,并生成此错误。

在服务器端确保已将正确的内容类型设置为“application/JSON”。我遇到了同样的问题,因为我的一个调用缺少一个显示响应为JSON的内容类型头。

我使用的是AF2。您的代码来自早期版本。嘿,您是否检查了来自服务器的JSON?我已经添加了来自服务器的响应。请检查上面的编辑。我在您的响应/日志中没有看到对象的JSON类型。似乎您的服务器没有正确发送JSON。我在服务器端创建了客户端,并测试了响应,如果提供了正确的JSON,我不知道为什么它会提供“text/plain”作为内容类型。当我发送GET请求时,它工作正常,并从iOS应用程序中为我提供正确的json响应。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;