URL 关键参数中包含 JSON (NSDictionary) 字符串的 AFNetworking GET 参数
AFNetworking GET parameters with JSON (NSDictionary) string contained in URL key parameter
必须发送这个 JSON 字符串:
{
"dashboard": "compact",
"theme": "dark",
"show_side_bar": "yes"
}
到 REST API 使用 GET 方法以这种格式(因为服务器使用此 PHP 代码 $_GET["setting"]
检索数据)与 AFHTTPRequestOperationManager
,这样等价的 URL 变成:
http://www.examplesite.com/api/change_setting?setting={ "dashboard" : "compact", "theme" : "dark", "show_side_bar" : "yes" }
当我在 AFHTTPRequestOperationManager
的 GET:parameters:success:failure:
中创建一个 NSDictionary
参数时,它将 url 关键参数 添加到参数字典本身是这样的:
{
"setting": {
"dashboard": "compact",
"theme": "dark",
"show_side_bar": "yes"
}
}
总之只有 JSON字符串必须封装在setting参数中NOT 在 JSON 字符串中作为 设置 的对象。
编辑:
这是代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{
kSettingDashboard: @"compact",
kSettingTheme: @"dark",
kSettingShowSideBar: @"yes"
};
[manager GET:kURLChangeSetting
parameters:[NSDictionary dictionaryWithObject:parameters forKey:@"setting"]
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
/// code
}];
试试这个:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSString *parametersString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[manager GET:kURLChangeSetting
parameters:@{@"setting" : parametersString}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
/// code
}];
你可以让php开发者把GET
改成request
,这样你就可以在POST
发送数据,这样你的数据就可以大批量发送了并且安全地
必须发送这个 JSON 字符串:
{
"dashboard": "compact",
"theme": "dark",
"show_side_bar": "yes"
}
到 REST API 使用 GET 方法以这种格式(因为服务器使用此 PHP 代码 $_GET["setting"]
检索数据)与 AFHTTPRequestOperationManager
,这样等价的 URL 变成:
http://www.examplesite.com/api/change_setting?setting={ "dashboard" : "compact", "theme" : "dark", "show_side_bar" : "yes" }
当我在 AFHTTPRequestOperationManager
的 GET:parameters:success:failure:
中创建一个 NSDictionary
参数时,它将 url 关键参数 添加到参数字典本身是这样的:
{
"setting": {
"dashboard": "compact",
"theme": "dark",
"show_side_bar": "yes"
}
}
总之只有 JSON字符串必须封装在setting参数中NOT 在 JSON 字符串中作为 设置 的对象。
编辑: 这是代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{
kSettingDashboard: @"compact",
kSettingTheme: @"dark",
kSettingShowSideBar: @"yes"
};
[manager GET:kURLChangeSetting
parameters:[NSDictionary dictionaryWithObject:parameters forKey:@"setting"]
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
/// code
}];
试试这个:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSString *parametersString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[manager GET:kURLChangeSetting
parameters:@{@"setting" : parametersString}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
// code
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
/// code
}];
你可以让php开发者把GET
改成request
,这样你就可以在POST
发送数据,这样你的数据就可以大批量发送了并且安全地