1

在使用 loadObjectsAtResourcePath:delegate: 进行 GET 时,我能够获取所有必需的 RKObjectLoaderDelegate 方法。

但是,当我使用 post:params:delegate: 进行 POST 时,只会调用 request:didLoadResponse:。甚至诸如 objectLoader:didLoadObjects: 和 objectLoader:didFailWithError: 之类的方法也不会被调用。

这是代码片段。

    self.appObjectManager.client = [RKObjectManager managerWithBaseURLString:self.webServiceURLString];
    [self.appObjectManager.client setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [self.appObjectManager.client setValue:@"" forHTTPHeaderField:@"Cookie"];

    RKObjectMapping* sessionInformationMapping = [RKObjectMapping mappingForClass:[sessionInformation class]];
    [sessionInformationMapping mapKeyPath:@"uid" toAttribute:@"userID"];
    [self.appObjectManager.mappingProvider setObjectMapping:sessionInformationMapping forKeyPath:@"user"];

    NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"abc", @"pwd", nil]
                                                                         forKeys:[NSArray arrayWithObjects:@"username", @"password", nil]];

    [self.appObjectManager.client post:resourcePath params:parameters delegate:self];

我在这里发现了一个类似的问题,但它似乎对我没有帮助。 RestKit:postObject 调用了什么委托方法?

4

1 回答 1

0

试试这个而不是 post:params:delegate:

[self.appObjectManager loadObjectsAtResourcePath:resourcePath usingBlock:^(RKObjectLoader * loader) {
  loader.method = RKRequestMethodPOST;
  loader.params = params;
  loader.delegate = self;
}];

当响应返回时,应该调用 objectLoader 委托方法。

于 2012-12-12T13:17:21.280 回答