RestKit .20 RKRequestDescriptor postObject - (400-499)中的预期状态代码,得到200

时间:2014-08-04 00:45:41

标签: ios objective-c core-data restkit restkit-0.20

有一点奇怪的问题,我正在使用RestKit将CoreData对象发布到远程Web服务。远程端的所有东西看起来都运行正常,但似乎RestKit在映射响应时遇到了一些问题。

我的对象响应映射看起来像这样,我有一个具有UserProfile一对一关系的User类:

 //UserProfile
 RKEntityMapping * userProfileMapping =
        [RKEntityMapping mappingForEntityForName:NSStringFromClass([UserProfile class])
                            inManagedObjectStore:[manager managedObjectStore]];
//…mapping
//User
RKEntityMapping * userMapping =
        [RKEntityMapping mappingForEntityForName:NSStringFromClass([User class])
                            inManagedObjectStore:[manager managedObjectStore]];

//…mapping

//relationship mapping
[userMapping addPropertyMapping:[RKRelationshipMapping 
     relationshipMappingFromKeyPath:@"userProfile"
                          toKeyPath:@"userProfile"
                        withMapping:userProfileMapping]];

 //add the response mappings for GET success
 [manager addResponseDescriptorsFromArray:@[
        [RKResponseDescriptor responseDescriptorWithMapping:userMapping
                                                     method:RKRequestMethodGET
                                                pathPattern:nil
                                                    keyPath:@"currentUser"
                     statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]] …rest of my mappings];

请求映射是userMapping

的倒数
  RKRequestDescriptor * currentUserRequestDescriptor =
            [RKRequestDescriptor requestDescriptorWithMapping:[userMapping inverseMapping]
                                                  objectClass:[User class]
                                                  rootKeyPath:@"currentUser"
                                                       method:RKRequestMethodPOST];

  [manager addRequestDescriptor:currentUserRequestDescriptor];

GET课程上的User个请求工作正常,POST也正常工作。

要更新我的User coreData对象,我正在使用`postObject'

[objectManager postObject:updatedUser
                     path:@"update"
               parameters:nil
                  success:…handler
                  failure:…handler]

POST正常工作,对象保存在我的远程服务中。 但是,我的success处理程序永远不会被调用,我永远不会得到更新的User对象。我已登录,我在响应中看到了有效的JSON。

response.body={"currentUser":{….user object}}

相反,调用失败,它似乎需要400响应,而不是200我的服务正在响应。

“NSLocalizedDescription” - > “预期状态代码在(400-499),得到200”

我没有办法在RKRequestDescriptorRKResponseDescriptor上设置预期的statusCodes。

由于

1 个答案:

答案 0 :(得分:2)

因为您的用户响应描述符使用method:RKRequestMethodGET所以它不会被视为与您的POST请求的响应匹配。

相反,请将method设置为RKRequestMethodAny

据推测,RestKit期待400-499,因为你有一个响应描述符,用于处理该路径上的错误响应。