我有一个网络服务,我试图从中获取一些数据。最终的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/
我只需要在值前面加上问号,而不是之前的值。
答案 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];
}