Restkit отправка Получить запрос вместо Post - PullRequest
1 голос
/ 26 января 2012

Я только начинаю использовать Restkit и пытаюсь отправить обычный запрос POST "serverUrl / account / authenticate.xml? OPTIONS", чтобы получить ответ в виде XML.Вот код, который я использую для вызова URL:

 -(void) function{

    // OBJECT MANAGER
    RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:serverUrl];
    [manager.router routeClass:[CBUser class] toResourcePath:@"/account/authenticate" forMethod:RKRequestMethodPOST];


    // OBJECT MAPPING
    RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[CBUser class]];
    mapping = [manager.mappingProvider objectMappingForKeyPath:@"user"];
    [mapping mapKeyPath:@"id" toAttribute:@"userId"];

    [manager loadObjectsAtResourcePath:str objectMapping:mapping delegate:self];
}


// DELEGATE
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects {  
    CBUser* user = [objects objectAtIndex:0];  
    NSLog(@"Loaded Contact ID #%@ -> Firstname: %@, Lastname: %@", user.userId, user.firstname, user.lastname);  
}  

- (void)objectLoader:(RKObjectLoader*)objectLoader didFailWithError:(NSError*)error {  
    NSLog(@"Encountered an error: %@", error); 
}

Глядя на журнал сервера, кажется, что он получает запрос GET вместо POST, хотя я использую опцию "RKRequestMethodPOST".

Вот моя ошибка из моих журналов:

Started GET "/account/authenticate.xml?commit=Login&authenticity_token=iPhone&user%5Bpassword=XXXXX&user%5Bemail=XXXXXXX%5D&user%5Bdevice_token=XXXXXXX" for 192.168.106.30 at 2012-01-25 19:20:03 -0800

AbstractController::ActionNotFound (The action 'show' could not be found for AccountController):


Rendered /Users/Guillaume/.rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/middleware/templates/rescues/unknown_action.erb within rescues/layout (1.2ms)

Чего мне не хватает?

1 Ответ

1 голос
/ 27 января 2012

Надеюсь, этот фрагмент кода моего приложения поможет.Вы устанавливаете свои отображения, скажем, в вашем делегате.Обратите внимание на «forMethod»

    RKObjectRouter *router;

    RKObjectMapping* createAccountSerializationMapping = [RKObjectMapping mappingForClass:[Cr    eateAccount class]];
    [createAccountSerializationMapping mapAttributes:@"email", @"pwd", @"uname", nil];

    [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:createAccountSerializationMapping forClass:[CreateAccount class]];

    router = [RKObjectRouter new] ;
    [router routeClass:[CreateAccount class] toResourcePath:@"/registration/rest/users/create_account" forMethod:RKRequestMethodPOST];

    [RKObjectManager sharedManager].router = router; 

и позже, когда вы хотите опубликовать объект

    [[RKObjectManager sharedManager] postObject:user delegate:self];
...