2012-01-26 12 views
1

私はちょうどRestkitを使い始めていて、通常のPOSTリクエスト "serverUrl/account/authenticate.xml?OPTIONS"をXMLとして送信しようとしています。Restkit send Postの代わりにリクエストを取得する

-(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); 
} 

サーバーを見てみると、それは私が「RKRequestMethodPOST」オプションを使用しているにもかかわらず、代わりにPOSTのGETリクエストを受け取ると思われるログ:これは私がURLを呼び出すために使用するコードです。ここで

私のエラーは、私のログを形成している:私は

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) 

何をしないのですか?

+0

オブジェクトを投稿したい場合、「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; 

してから、後で、それが正しいと答えをマークするか、それが仕事をdidntの理由を説明するために良い形です注意してください – Sheena

答えて

1

私のアプリのこのコードスニペットが役に立ちます。あなたはあなたの代理人のようにあなたのマッピングをセットアップします。あなたは

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