【发布时间】:2014-02-27 23:45:09
【问题描述】:
在我的应用程序中,我目前正在从每个视图控制器发送 http 请求。但是,目前我正在实现一个类,它应该具有发送请求的方法。
我的请求在参数数量上有所不同。例如,要获取 tableview 的列表,我需要将类别、子类别、过滤器和另外 5 个参数放入请求中。
这就是我的请求现在的样子:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setValue:verifString forHTTPHeaderField:@"Authorization"];
[request setURL:[NSURL URLWithString:@"http://myweb.com/api/things/list"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSMutableString *bodyparams = [NSMutableString stringWithFormat:@"sort=popularity"];
[bodyparams appendFormat:@"&filter=%@",active];
[bodyparams appendFormat:@"&category=%@",useful];
NSData *myRequestData = [NSData dataWithBytes:[bodyparams UTF8String] length:[bodyparams length]];
[request setHTTPBody:myRequestData]
我的第一个想法是创建一个方法,它接受所有这些参数,那些不需要的将是 nil,然后我会测试哪些是 nil,那些不是 nil 的将附加到参数字符串(ms )。
然而,这非常低效。 后来我在考虑传递一些带有参数存储值的字典。类似于 android 的 java 中使用的带有 nameValuePair 的数组列表。
我不确定,如何从字典中获取键和对象
-(NSDictionary *)sendRequest:(NSString *)funcName paramList:(NSDictionary *)params
{
// now I need to add parameters from NSDict params somehow
// ?? confused here :)
}
【问题讨论】:
-
看看AFNetworking,他们有一个
AFHTTPClient,这将使此类呼叫变得非常容易。
标签: ios nsdictionary parameter-passing key-value http-request