2017-05-04 76 views
0

我正在尋找一種方法來映射要發佈到端點的空對象。該調用需要爲POST,但不應該有任何數據發佈到端點(空體),這只是關於直接調用端點而沒有數據。如何使用RestKit發佈無發佈數據

我已經嘗試使用與RestKit: How to handle empty response.body?相同的技巧,但使用RKRequestDescriptor代替。 「:

未捕獲的異常:RKRequestDescriptor對象必須與它的目標類是NSMutableDictionary,得到了一個映射被初始化小號postObject法‘NSNull’(見[RKObjectMapping requestMapping]

否則使用postData:nilRKObjectMapping時會導致以下錯誤);

使用NSNullRKRequestDescriptor的映射似乎工作,但nil似乎要失敗的映射作用。

回答

1

由於錯誤提到,它正在尋找映射操作的NSMutableDictionary。所以使用空的NSMutableDictionary@{}而不是nilpostObject伎倆。

AFRKHTTPClient *client = [self getClient]; 

RKObjectManager *objectManager = [[RKObjectManager alloc] initWithHTTPClient:client]; 

RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[NSNull class]]; 
[objectManager addRequestDescriptor: 
[RKRequestDescriptor requestDescriptorWithMapping:requestMapping 
             objectClass:[NSNull class] 
             rootKeyPath:nil 
              method:RKRequestMethodAny]]; 

RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[NSNull class]]; 
[objectManager addResponseDescriptor: 
[RKResponseDescriptor responseDescriptorWithMapping:responseMapping 
               method:RKRequestMethodPOST 
             pathPattern:nil 
              keyPath:nil 
             statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]]; 

[objectManager postObject:@{} // <-- this works, but nil doesn't 
         path:@"/api/some/endpoint" 
        parameters:nil 
         success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
          // succes code here 
         } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
          // failure code here 
         }];