5

我正在使用 Restkit 与 Drupal CMS 进行通信。当我发送第一个请求时,一切正常:我得到了正确的 JSON 字符串 -> 真棒。这就是控制台所说的:

2011-06-24 23:00:48.344 MyApp[1399:207] 向 URL http://mysite.com/myproject/services/rest/service_views/get.json发送 POST 请求 。HTTP 正文:view_name=viewsname

如果应用程序尝试再次发送相同的请求,则不会发生任何事情。没有一个委托方法被调用。控制台说:

2011-06-24 23:03:40.224 MyApp[1399:207] 向 URL http://www.mysite.com/myproject/services/rest/service_views/get.json发送 GET 请求 。HTTP 正文:

我在一个特殊类(单例)中做所有 Restkit 的东西,我把它作为我的视图控制器的实例变量。在这个类的初始化函数中,我这样做:

RKObjectManager* objectManager = [RKObjectManager
objectManagerWithBaseURL:kBaseURLKey];

在我的视图控制器中,我正在调用一个- (void)pollForNewData函数,它执行以下操作:

RKObjectLoader* objectLoader = [[RKObjectManager sharedManager] loadObjectsAtResourcePath: kRessourceKey objectClass:[RKNotification class] delegate:self]; 
objectLoader.method = RKRequestMethodPOST;
objectLoader.params = [NSDictionary dictionaryWithKeysAndObjects: @"view_name", @"viewsname", nil];
[objectLoader send];

有谁能够帮助我?在第一个响应出现后,我必须做一些特别的事情吗?是否可以取消请求(如果离开当前视图)?

4

1 回答 1

6

当前的 RestKit 源(~0.9.2+)似乎没有 loadObjectsAtResourcePath:objectClass:delegate: 方法。

你可以使用这样的东西:

// It's for logging in Drupal's user resource with RestKit.
// You can change the user bits to your need.

RKObjectManager *objectManager = [RKObjectManager sharedManager];
RKObjectMapping *currentUserMapping = [objectManager.mappingProvider objectMappingForKeyPath:@"currentUser"];

RKObjectLoader *objectLoader = [objectManager objectLoaderWithResourcePath:@"user/login" delegate:self];
objectLoader.method = RKRequestMethodPOST;
objectLoader.objectMapping = currentUserMapping;
objectLoader.params = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"testuser", @"username",
                       @"testpass", @"password",
                       nil];
[objectLoader send];

希望能帮助到你。

于 2011-06-27T22:55:45.983 回答