2013-07-29 60 views
0

我試圖發送一個使用RestKit的DELETE請求,但它似乎總是作爲「GET」發送。這裏是我的代碼:如何使用RestKit(0.20)執行DELETE請求?

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor 
             responseDescriptorWithMapping:[self objectMapping] 
             method:RKRequestMethodDELETE 
             pathPattern:nil 
             keyPath:nil 
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]; 


RKObjectRequestOperation *objectRequestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]]; 
[objectRequestOperation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 

    [delegate onRequestSuccess:mappingResult.array]; 

} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    RKLogError(@"operation failed with error: %@", error); 
    [delegate onRequestError:operation message:error]; 
}]; 

[objectRequestOperation start]; 

我也試過用RKObjectManager:DeleteObject的,它不會正確地發送一個DELETE請求,但響應不被映射。

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:request.url]; 
[manager addResponseDescriptor:responseDescriptor]; 
[manager deleteObject:nil path:request.urlString parameters:nil 
       success:^(RKObjectRequestOperation *operation , RKMappingResult *mappingResult) { 
        Tag *tag = mappingResult.firstObject; // this is null, does not get mapped 

       } failure:^(RKObjectRequestOperation *operation , NSError *error) { 
        RKLogError(@"Error deleting tag %@, error: %@", tagId, error); 
       }]; 

回答

1

如果您使用RKObjectRequestOperation,你需要自己配置request。它是GET,因爲這是默認設置。

如果您使用RKObjectManager,那麼你可以使用deleteObject,而不是你自己。

+0

如何爲RKObjectRequestOperation設置它?我已經將它設置在RKResponseDescriptor中,但這沒有任何作用。 – ebi

+0

'[request setHTTPMethod:@「DELETE」]; '。您設置的刪除只是告訴RestKit關於對請求的響應。 – Wain