AFNetworking 2.0 POST问题,Cocoa错误3840(JSON文本没有以数组开头......)

use*_*185 6 php json objective-c ios afnetworking-2

我试图在我的本地服务器上调用api.php(使用MAMP).正在调用服务器端api.php,但php代码中的_POST内容包含以下错误:

Error Domain = NSCocoaErrorDomain Code = 3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo = 0x15d7bdd0 {NSDebugDescription = JSON text did not start with array or object and option to allow fragments not set.}
Run Code Online (Sandbox Code Playgroud)

我的应用程序试图将JSON POST请求发送到api.php是一个使用AFNetworking 2的iOS应用程序

这是我的请求代码:

- (void)postUpdateRequest
{
    if (!dataModel)
        dataModel = [[DataModel alloc] init];

    NSDictionary *params = @{@"foo": @"bar2"};

    NSLog(@"%@",params);

/*    NSDictionary *params = @{@"cmd":@"update",
                             @"user_id":[dataModel userId],
                             @"token":[dataModel deviceToken]
                             };//@"ip_address":[dataModel getIPAddress]};*/

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    [manager POST:ServerApiURL parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"JSON: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
    }];
}
Run Code Online (Sandbox Code Playgroud)

我查看了整个互联网,但无法找到我的具体问题的答案.无论我做什么,我都会得到同样的错误.

为什么我的JSON格式不正确?我似乎也找不到嗅探我实际发送的JSON的方法.

谢谢.

Cou*_*per 5

当您在示例中使用API​​时,您的HTTP消息将使用Content-Type组成application/x-www-form-urlencoded.在内部,您的param字典由AFN编码(虽然不严格按w3c指定),并设置为请求正文.

由于您未指定Accept标头,因此服务器可以自由选择可能的响应数据(如果有)的内容类型.

收到响应时,您需要始终检查HTTP状态代码和响应正文的内容类型(如果有).

可能的情况是,服务器返回一个状态代码,指示某个问题,并且响应正文包含某种不同类型的内容类型的"错误响应"(例如,它返回text/html).