使用AFNetworking 2.0构建URL

时间:2014-05-05 06:10:06

标签: ios objective-c afnetworking-2

我有一个网络服务,我试图从中获取一些数据。最终的URL应如下所示:

http://server.com/services/v2/item/3?....ect

上述网址中的值3是动态的,我需要根据用户操作进行更改。我把所有这些部分放下来,对于URL,我只是将参数放入NSDictionary,就像我所有的其他服务一样。

唯一的区别是这个Web服务没有使用密钥作为值,就像其他Web服务一样。所以我只是将值放入NSDictionary而没有键。

发出请求后,最终的网址如下所示:

http://server.com/services/v2/item/?3.....ect

我使用的基本网址:http://server.com/services/v2/item/

我只需要在值前面加上问号,而不是之前的值。

2 个答案:

答案 0 :(得分:1)

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

[manager GET:[NSString stringWithFormat:@"http://server.com/services/v2/item/%d?",myValue] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

不是将NSDictionary传递给parameters,而是传递nil。然后使用stringWithFormat参数构建网址,并将其传递给GET

答案 1 :(得分:0)

通常基础URL设置为api端点root,因此在您的情况下应该是http://server.com/services/v2

也可以通过url字符串传递参数(在你的情况下是项目的ID)并将其与parameters字典混合。

获取项目的方法可能如下所示

...
// Set a base URL to your session/operations manager
self.sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL urlWithString:@"http://server.com/services/v2"]];
...


- (NSURLDataTask *)fetchItemWithID:(NSString *)ID parameters:(NSDictionary *)parameters success:... failure:...
{
    NSString *urlPathString = [NSString stringWithFormat:@"item/%@", ID);

    return [self.sessionManager GET:urlPathString parameters:parameters success:success failure:failure];
}