如何向 JSON 请求添加一些参数?
Posted
技术标签:
【中文标题】如何向 JSON 请求添加一些参数?【英文标题】:How to add some parameters to a JSON request? 【发布时间】: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。服务器已经配置好并且工作正常,但我找不到修改我的代码的指南。有人知道如何进行吗?
【问题讨论】:
【参考方案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);
];
希望对你有帮助,给我反馈!
【讨论】:
以上是关于如何向 JSON 请求添加一些参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Charles 代理修改 json 有效负载请求并添加新的 json 参数