Restkit Objective-C: почтовый запрос работает только один раз - PullRequest
5 голосов
/ 26 июня 2011

Я использую Restkit для связи с Drupal CMS.Когда я отправляю первый запрос, все работает нормально: я получаю правильную строку JSON -> потрясающе.Вот что говорит консоль:

2011-06-24 23: 00: 48.344 MyApp [1399: 207] Отправка POST-запроса на URL http://mysite.com/myproject/services/rest/service_views/get.json. Тело HTTP: view_name = viewsname

Если приложение пытается отправить тот же запрос еще раз, ничего не происходит.Ни один из методов делегата не вызывается.Консоль сообщает:

2011-06-24 23: 03: 40.224 MyApp [1399: 207] Отправка запроса GET на URL http://www.mysite.com/myproject/services/rest/service_views/get.json. Тело HTTP:

Я делаю все вещи Restkit в специальном классе (singleton), который я храню в качестве переменной экземпляра моего view-контроллера.В функции init этого класса я делаю это:

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];

Кто-нибудь может мне помочь?Должен ли я сделать что-то особенное после первого ответа?Можно ли отменить запрос (если текущий вид был оставлен)?

1 Ответ

6 голосов
/ 28 июня 2011

Текущий источник RestKit (~ 0.9.2 +), похоже, не имеет loadObjectsAtResourcePath: objectClass: делегат: метод.

Вы можете использовать что-то вроде этого:

// 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];

Hopeэто помогает.

...