ios - AFNetworking 参数序列化错误

标签 ios afnetworking-2

我正在这样使用 AFNetwork:

NSMutableDictionary *parameters = ...;
NSLog(@">>> %@", parameters);

void (^successBlock)(AFHTTPRequestOperation *operation, id responseObject) =  ^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"<<< %@", responseObject);
}

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *operation = [manager POST:...
                                       parameters:parameters.copy 
                        constructingBodyWithBlock:...
                                         success:successBlock
                                         failure:...];

parameters 字典非常复杂,它包含一个字典数组,如下所示:

>>> {
    columns = 3;
    rows = 3;
    time = 54;
    invitees = "{(
        {
        email = \"A\";
        firstName = B;
        lastName = C;
        phoneNumber = \"D\";
        },
        {
        email = \"E\";
        firstName = \"F\";
        lastName = G;
        phoneNumber = \"H\";
        }
    )}";
}

但是我的服务器和成功 block 都收到一个字典,其中每个属性都在不同的字典中,如下所示:

 <<<
 {
    error = "-160";
    result =     {
        errorPostReceived =         {
            columns = 3;
            invitees =             (
                                {
                    email = "A";
                },
                                {
                    firstName = B;
                },
                                {
                    lastName = C;
                },
                                {
                    phoneNumber = "D";
                },
                                {
                    email = "E";
                },
                                {
                    firstName = "F";
                },
                                {
                    lastName = G;
                },
                                {
                    phoneNumber = "F";
                }
            );
            rows = 3;
            time = 54;
        };
    };
}

我怀疑 AFURLRequestSerialization.m 中的 AFQueryStringPairsFromKeyAndValue 但我无法弄清楚这里到底是什么问题。

最佳答案

multipart/form-data 请求需要一系列键值对(或文件或您有什么),但是与 invitees 关联的“值” key 似乎是 NSDictionarydescription,这将很难解析(因为它不符合任何既定标准)。

从理论上讲,您可以将该值设为字典的 JSON 表示形式,并在服务器端手动 json_decode(如果您使用的是 PHP)。或者您可以使整个请求成为一个 JSON 请求,避免 multipart/form-data 和 JSON 的奇怪混合(尽管我意识到这可能是一个比您想考虑的更大的变化。)

但是 multipart/form-data 规范没有考虑嵌套字典的概念。

关于ios - AFNetworking 参数序列化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27382696/

相关文章:

html - 如何在 ipad 中使 div 可滚动?

ios - 使用 NSKeyedUnarchiver unarchivedObject(ofClass :from:)) 取消归档数组

iOS 8.x + AFNetworking 内存增长

ios - 使用 AFNetworking 2.0 访问 DailyMile API

ios - 导轨 : Error occurred while parsing request parameters.(HTTP PUT)

ios - 为 iOS7 应用程序添加 Background Fetch 以通过 AFNetworking 抓取网络数据

ios - Retina iPad 上 iOS 7 中的 WebKit 中的框阴影传播错误

ios - 根据用户登录与否管理 iOS 应用程序 UI 状态

ios - UICollectionView 顶部栏未出现在模拟器中

php - 尽管上传成功,AFNetworking 2.0 POST + PHP 阻止失败