我正在使用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;
任何线索都会非常感激,如果需要的话我会很乐意发布更多代码。
提前致谢。
答案 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服务方法。
希望有一天这可能对别人有所帮助,并为浪费其他人的时间而道歉!