gpt4 book ai didi

ios - RESTKit-postObject :path:parameters:success:failure: method always fails

转载 作者:行者123 更新时间:2023-11-29 02:48:09 25 4
gpt4 key购买 nike

我正在尝试向服务器发送 POST 请求。我正在使用带有请求描述符的 RESTKit:

RKObjectMapping *messageRequestMapping = [RKObjectMapping requestMapping ];
[messageRequestMapping addAttributeMappingsFromArray:@[@"to", @"msg"]];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:messageRequestMapping objectClass:[PostMessage class] rootKeyPath:nil method:RKRequestMethodAny];

[objectManager addRequestDescriptor:requestDescriptor];

然后我使用 postObject:path:parameters:success:failure:

PostMessage *postMessage = [PostMessage new];
postMessage.to = self.pickedPerson.name;
postMessage.msg = message.messgaeContent;
[[RKObjectManager sharedManager] postObject:postMessage path:@"/post" parameters:nil
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"SUCCES: message sent to server");

}
failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"WARNING");
}];

问题是失败 block 总是被调用,即使我看到 POST 请求成功到达服务器。当我使用简单的 REST 客户端测试相同的 POST 请求时,我得到的状态代码是 200。

我得到的错误是:

Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 “没有响应描述符匹配加载的响应。” UserInfo=0x10c67adf0 {NSLocalizedFailureReason=从 URL 'http://bla.com/post' 加载了 200 响应,未能匹配所有 (0) 个响应描述符:,NSErrorFailingURLStringKey=http://bla.com/post, NSErrorFailingURLKey=http://bla.com/post, NSUnderlyingError=0x10c60add0 “在搜索的关键路径上找不到可映射的对象表示。”, keyPath=null, NSLocalizedDescription=没有响应描述符匹配加载的响应。

我不确定是否必须设置 responseDescriptor。我不能像设置 responseDescriptor 时那样设置预期的状态代码吗?

编辑:我添加了一个响应描述符:

// message response after a post
RKObjectMapping *messageResponseForPostMapping = [RKObjectMapping mappingForClass:[PostMessage class]];
[messageResponseForPostMapping addAttributeMappingsFromArray:@[@"success"]];

RKResponseDescriptor *messageResponseForPostDescriptor =
[RKResponseDescriptor responseDescriptorWithMapping:messageResponseForPostMapping
method:RKRequestMethodPOST
pathPattern:@"post"
keyPath:@""
statusCodes:[NSIndexSet indexSetWithIndex:200]];
[objectManager addResponseDescriptorsFromArray:@[messageResponseDescriptor, personResponseDescriptor, messageResponseForPostDescriptor]];

服务器的响应是:

{
"success" : "Message sent successfully."
}

它仍然失败并出现相同的错误。

最佳答案

错误信息告诉你

"No mappable object representations were found at the key paths searched."

因此,要么您提供了错误的响应描述符,要么您没有定义响应描述符。提供正确的响应描述符应该可以解决问题。

这是一个示例响应描述符:

RKObjectMapping* mapping = [RKObjectMapping mappingForClass:<YOURCLASSHERE>];
...
RKResponseDescriptor * responseDescriptor = [RKResponseDescriptor
responseDescriptorWithMapping:mapping
method:RKRequestMethodPOST
pathPattern:path keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[objectManager addResponseDescriptor:responseDescriptor];

关于ios - RESTKit-postObject :path:parameters:success:failure: method always fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24849370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com