2011-06-26 15 views
5

Używam programu Restkit do komunikacji z Drupal CMS. Kiedy wysyłam pierwsze żądanie wszystko działa poprawnie: otrzymuję prawidłowy ciąg JSON- -> niesamowity. To jest to, co mówi, konsola:Restkit Objective-C: Post request działa tylko raz.

2011-06-24 23: 00: 48,344 MojaApl [1399: 207] Wysyłanie żądania POST do adresu http://mysite.com/myproject/services/rest/service_views/get.json. HTTP Treść: view_name = liczba wyświetleń

Jeśli aplikacja ponownie spróbuje wysłać to samo żądanie, nic się nie dzieje. Brak metody delegatów. Konsola mówi:

2011-06-24 23: 03: 40,224 MojaApl [1399: 207] Wysyłanie żądania GET URL http://www.mysite.com/myproject/services/rest/service_views/get.json. HTTP ciała:

Robię wszystkie rzeczy Restkit w specjalnej klasy (pojedyncza), który trzymam jako zmiennej instancji mojego View-Controller. W startowe funkcji tego klasy Robię to:

RKObjectManager* objectManager = [RKObjectManager 
objectManagerWithBaseURL:kBaseURLKey]; 

w moim View-Controller Dzwonię do - (void)pollForNewData funkcji który wykonuje następujące czynności:

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

może ktoś pomóc mnie? Czy muszę zrobić coś specjalnego po tym, jak przyszła pierwsza odpowiedź? Czy można anulować żądanie (jeśli bieżący widok został pozostawiony)?

Odpowiedz

6

Obecne źródło polecenia RestKit (~ 0.9.2 +) nie ma wartości loadObjectsAtResourcePath: objectClass: delegate: method.

Można użyć coś takiego:

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

Nadzieję, że to pomaga.

+0

Szukałem tego przez cały dzień! Dzięki! Jedna rzecz, 'objectMappingForKeyPath:' jest przestarzała w 0.9.3, użyj 'mappingForKeyPath:' zamiast :) – Hlung