objectivec-AFNetworking GET参数,URL关键字参数中包含JSON(NSDictionary)字



必须发送此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" }

当我在AFHTTPRequestOperationManagerGET:parameters:success:failure:中创建参数的NSDictionary时,它将url密钥参数添加到参数字典中,如下所示:

{
  "setting": {
    "dashboard": "compact",
    "theme": "dark",
    "show_side_bar": "yes"
  }
}

简而言之,onlyJSON字符串必须封装在设置参数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中发送数据,这样您的数据就可以被大量安全地发送到

最新更新