RestKit - POST请求中的正文内容不正确

时间:2014-06-19 13:02:48

标签: json restkit restkit-0.20

我正在使用POST方法尝试[RKObjectManager sharedManager] postObject以下JSON:

{
   "SerialNumber":"123XYZ"
}

但我的网络服务收到:

{
   "docs\/:docId\/serials":{"SerialNumber":"123XYZ"}
} 

其中"docs\/:docId\/serials"path参数,我将其传递到[RKObjectManager sharedManager] postObject方法,指定了我的Web服务方法所需的路径。

有谁知道为什么这个额外的路径数据包含在被发布的正文内容中?

我的基于NSObject的类的映射似乎工作正常,正确的序列号传递到JSON。我已经将RKObjectManager设置为在请求中使用MIME类型的JSON,使用以下代码,它不会做任何事情吗?

objectManager.requestSerializationMIMEType = RKMIMETypeJSON;

任何线索都会非常感激,如果需要的话我会很乐意发布更多代码。

提前致谢。

1 个答案:

答案 0 :(得分:1)

啊,自然发布这个问题5分钟后,我找出了这个问题相对明显的原因。

为此操作设置RKRequestDescriptor时,我在rootKeyPath参数中传递了我的Web服务方法的路径,认为RestKit需要将其作为密钥,以便找到它我稍后调用postObject方法时的描述符。

但是,当我从rootKeyPath参数中删除了网络服务路径时,它也从POST主体中消失了。

RKRequestDescriptor *addSerialRequestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:addSerialRequestMapping objectClass:[Serial class] rootKeyPath:nil method:RKRequestMethodPOST];

我现在意识到我在RKRequestDescriptor requestDescriptorWithMapping:方法中获取了rootKeyPath参数,并与RKResponseDescriptor responseDescriptorWithMapping:方法中的pathPattern参数混淆,后者(据我所知,RestKit)确实需要有路径传递给它的Web服务方法。

希望有一天这可能对别人有所帮助,并为浪费其他人的时间而道歉!