我确实知道如何做到这一点,这相当简单。
问题是它不起作用。
这是我用来发布数据的函数:
- (void)updateWebsitesUsingParameters:(NSDictionary *)parameters;
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"http://notreal/updateWebsites.php"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
//...
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//...
}];
}
以下是参数:
NSDictionary *parameters = @{@"type" : @"0",
@"credentials" : @{@"email" : @"[email protected]", @"password" : @"notreal"},
@"device" : @{@"ID" : @"8588107756600540", @"numberOfSessions" : @"0", @"name" : @"Nick's iMac"},
@"websites" : @[@{@"title" : @"Google", @"URL" : @"http://www.google.com"}, @{@"title" : @"Yahoo", @"URL" : @"http://www.yahoo.com"}]};
以下是 MySQL 字段中保存的内容:
[{URL = "http://www.google.com";},{title = Google;},{URL = "http://www.yahoo.com";},{title = Yahoo;}]
这太疯狂了!
- 我已经成功保存了 MySQL 字段内字典中具有多个属性的字典数组的 JSON --或者简而言之我想在这里做什么-- 将 PHP 脚本用于不同的目的并且它可以工作,没有问题。
- 我使用相同的 PHP 代码将其保存到 MySQL 字段,所以这不是 PHP 的错误。
- 我使用 AFNetworking 制作的所有其他保存/检索功能都完美运行。
这有效:
@[@{@"title" : @"Google"}, @{@"title" : @"Yahoo"}]
这不会:
@[@{@"title" : @"Google", @"URL" : @"http://www.google.com"}, @{@"title" : @"Yahoo", @"URL" : @"http://www.yahoo.com"}]
这是回应:
{
websites = (
{
URL = "http://www.google.com";
},
{
title = Google;
},
{
URL = "http://www.yahoo.com";
},
{
title = Yahoo;
}
);
}
INSANE!
由于某种原因,如果我添加额外的属性,它就会崩溃。
这一定是一个AF网络bug,因为它没有意义。
EDIT:
I could:
创建两个 MySQL 字段:websiteTitles、websiteURLs。
将其保存为一个字符串:“Google;http://www.google.com”然后将其分开,但这违背了使用 JSON 的目的。
发送切成两半的参数:websteTitles、websiteURLs
一切都很可怕,有什么想法吗?
EDIT 2:
我运行了一些测试:
无论数组有 1 个还是 2 个项目,它的行为仍然是这样的。
我尝试了什么rob180建议,正如预期的那样,这是 AFNetwokring 的错:
{
websites = (
{
URL = "http://www.google.com";
},
{
title = Google;
},
{
URL = "http://www.yahoo.com";
},
{
title = Yahoo;
}
);
}
这是从应用程序发送的实际服务器响应,中间没有 mysql。
EDIT 3:
REQUEST: <NSMutableURLRequest: 0x7f9352d467e0> { URL: http://notreal/updateWebsites.php }
The HTTPBody看起来像这样:
<63726564 656e7469 616c735b ... 653d30>
我怎样才能解码这个?
另外,我正在使用AFHTTPRequest序列化器。也许,如果我把它改成AFJSONRequestSerializer它会解决问题,但我真的不想这样做,因为我已经用这种方式编写了很多方法。