我的RESTful webservice(Rails)上有方法“getBuses”。该方法需要返回 我在JSON的公交车列表。但是,当我发送“/getBuses.json”请求时 需要发送
params = [NSDictionary
dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE",
@"fromSerbia", nil];
我发布了params因为我需要过滤响应(仅针对特定情况) 特定日期的旅行)。 然后,我期待这样的反应:
{
"buses" : [ {
"bus_number" : "1",
"created_at" : "2011-08-15T23:07:52Z",
"id" : 1,
"lat" : 44.815,
"long" : 20.4665,
"model" : "Setra",
"registar_number" : "123456",
"seats" : 50,
"tour_id" : 1,
"updated_at" : "2011-08-15T23:07:52Z"
}, {
"bus_number" : "2",
"created_at" : "2011-08-15T23:07:52Z",
"id" : 2,
"lat" : 44.812,
"long" : 20.465,
"model" : "Mercedes",
"registar_number" : "2234",
"seats" : 60,
"tour_id" : 1,
"updated_at" : "2011-08-15T23:07:52Z"
} ]
}
我只需要带有Bus对象的NSArray。 您能否给我一些代码示例如何发出此请求并使用RestKit进行对象映射?
答案 0 :(得分:5)
正如我在IRC频道中告诉你的那样,在你的RKClient实例中你可以使用这种方法:
(NSURL *)URLForResourcePath:(NSString *)resourcePath queryParams:(NSDictionary *)queryParams
所以你应该这样做:
[objectManager.mappingProvider setMapping:busesMapping forKeyPath:@"buses"];
params = [NSDictionary dictionaryWithObjectsAndKeys: @"2011-08-16", @"datum", @"TRUE", @"fromSerbia", nil];
NSURL *someURL = [objectManager.client URLForResourcePath:@"/service/getLocations.json" queryParams:params];
[objectManager loadObjectsAtResourcePath:[someURL absoluteString] delegate:self];
该方法使用resourcePath和您作为参数提供的参数构建有效的URL。然后你需要使用NSURL对象的absoluteString将其设置回来。希望这有帮助!