2012-12-13 19 views
7

Próbuję użyć narzędzia RestKit do wywołania punktu końcowego wymagającego podstawowego uwierzytelnienia.Jak ustawić podstawowe uwierzytelnianie przy użyciu narzędzia RestKit 0.20.0?

RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[JSNCategory class]]; 
[mapping addAttributeMappingsFromDictionary:@{ 
    @"id": @"catId", 
    @"name": @"name" 
}]; 

NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful); 
RKResponseDescriptor *responseDescriptor 
= [RKResponseDescriptor responseDescriptorWithMapping:mapping 
              pathPattern:@"/api/v1/categories" 
               keyPath:nil 
              statusCodes:statusCodes]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL 
         URLWithString:@"https://rest.example.com"]]; 

RKObjectRequestOperation *operation 
    = [[RKObjectRequestOperation alloc] initWithRequest:request 
            responseDescriptors:@[responseDescriptor]]; 

[operation setCompletionBlockWithSuccess: 
^(RKObjectRequestOperation *operation, RKMappingResult *result) { 
    JSNCategory *cat = [result firstObject]; 
    NSLog(@"Mapped the category: %@", cat); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    NSLog(@"Failed with error: %@", [error localizedDescription]); 
}]; 

Odpowiedz

26

Używanie objectmanager byłoby to coś jak:

NSURL* url = [[NSURL alloc]initWithString:@"http://rest.url.com"]; 
RKObjectManager* objectManager = [RKObjectManager managerWithBaseURL:url]; 

[objectManager.HTTPClient setAuthorizationHeaderWithUsername:@"username" password:@"password"]; 

Następnie po ustawieniu odpowiedniego żądania/odpowiedzi można użyć objectmanager zrobić get/post/etc:

[objectManager getObjectsAtPath:endpoint parameters:parameters success: 
    ^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
     // do something 
    } 
    failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     // do something 
    } 
]; 
+0

Doskonały, działa jak magnes. –

+1

ok @BrettRyan, ale nie używasz RKObjectManager, więc jak to zrobiłeś? – jturolla

+0

Ten sam komentarz ode mnie. W jaki sposób obiekt ObjectManager zostaje użyty w wywołaniu? – nimbusgb

Powiązane problemy