AFNetworking GET 参数与包含在 URL 键参数中的 JSON (NSDictionary) 字符串
Posted
技术标签:
【中文标题】AFNetworking GET 参数与包含在 URL 键参数中的 JSON (NSDictionary) 字符串【英文标题】:AFNetworking GET parameters with JSON (NSDictionary) string contained in URL key parameter 【发布时间】:2015-07-02 06:32:24 【问题描述】:这个 JSON 字符串必须被发送:
"dashboard": "compact",
"theme": "dark",
"show_side_bar": "yes"
使用 GET 方法以这种格式(因为服务器使用此 php 代码 $_GET["setting"]
检索数据)和 AFHTTPRequestOperationManager
到 REST API,这样等效的 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"
简而言之only JSON 字符串必须封装在 setting 参数 NOT 中作为 setting 的对象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
];
【问题讨论】:
为什么这不是 POST 或 PUT?显示您在其中创建和设置字典和 JSON 的代码 @Wain 因为 API 使用 GET 方法。添加了代码。我不知道如何实现这一点。这方面的一些建议会很有帮助。 【参考方案1】:试试这个:
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
];
【讨论】:
如果你知道,请你解释一下为什么会这样?【参考方案2】:你可以要求php开发者把GET
改成request
,这样你就可以在POST
发送数据,这样你的数据就可以大量安全地发送了
【讨论】:
以上是关于AFNetworking GET 参数与包含在 URL 键参数中的 JSON (NSDictionary) 字符串的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0 参数字典不适用于 GET 请求
使用 afnetworking 在 GET 方法的 url 中传递参数