【问题标题】:How to add some parameters to a JSON request?如何向 JSON 请求添加一些参数?
【发布时间】:2014-04-25 08:16:16
【问题描述】:

通常,要下载 JSON,我使用 AFNetworking 使用此代码创建单例

- (void)getJSON {
    NSURLRequest * request =
    [NSURLRequest requestWithURL:
     [NSURL URLWithString:@"http://URL"]];

    AFJSONRequestOperation * operation =
    [AFJSONRequestOperation JSONRequestOperationWithRequest:request
     success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

         NSArray * js = JSON;
         [_delegate dati:js];

         NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
         NSString * filePath = [[paths lastObject] stringByAppendingPathComponent:@"downloaded.json"];

         NSData * data = [NSJSONSerialization dataWithJSONObject:JSON
                                                         options:NSJSONWritingPrettyPrinted
                                                           error:NULL];
         [data writeToFile:filePath
                atomically:YES];

     }];

    [operation start];
}

并在视图控制器中调用此代码

[[DataManager sharedClass] getJSON];

它可以工作,但现在我需要将一些参数(作为授权码、GPS 坐标、用户邮件或类似的东西)发送(发布)到服务器的请求中以接收特定的 JSON。服务器已经配置好并且工作正常,但我找不到修改我的代码的指南。有人知道如何进行吗?

【问题讨论】:

    标签: ios json afnetworking afnetworking-2


    【解决方案1】:

    这是一个使用 JSON 将数据发布到服务器的示例,例如下面的 json:

    NSDictionary *json = @{@"authorization_code": yourAuthorizationCode,@"gps": @{@"lat": latitude,@"lng": longitude},@"email":email};
    

    JSON 发布

    在服务器上发布还取决于您的服务器要求,所以如果它需要 JSON 来发布,这就是方式:

    //Create an AFHTTPRequestOperationManager
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    //Depending if you need a HTTP header, you create one
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    NSString *yourAuthorizationCode;
    NSString *latitude;
    NSString *longitude;
    NSString *email;
    
    
    //My data to be posted via JSON
    NSDictionary *json = @{@"authorization_code": yourAuthorizationCode,@"gps": @{@"lat": latitude,@"lng": longitude},@"email":email};
    
    
    //Sending Post Method, with parameter JSON
    [manager POST:@"http://myphp.com/api/v1/profile" parameters:json success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSLog(@"JSON: %@", responseObject);
     }
          failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"Error at creating post: %@", error);
     }];
    

    通过 URL 发布的参数

    在此方法中,参数以 URL 的形式传递,然后以 URL 的形式发布到服务器

    //Create an AFHTTPRequestOperationManager
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    
    
    NSString *yourAuthorizationCode;
    NSString *latitude;
    NSString *longitude;
    NSString *email;
    
    //Sending Post Method, with parameter JSON (You can change your method of sending data to server just by replacing POST with GET)
    [manager POST:[NSString stringWithFormat:@"http://myphp.com/api/v1/profile?authorization_code=%@&gps_lat=%@&gps_lng=%@&email=%@",yourAuthorizationCode,latitude,longitude,email] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
     {
         NSLog(@"JSON: %@", responseObject);
     }
          failure:^(AFHTTPRequestOperation *operation, NSError *error)
     {
         NSLog(@"Error at creating post: %@", error);
     }];
    

    希望对你有帮助,给我反馈!

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2013-06-18
      • 2016-04-13
      • 1970-01-01
      相关资源
      最近更新 更多