Post Json Restkit 无法为 HTTP 方法“POST”类型的对象找到可路由路径

Posted

技术标签:

【中文标题】Post Json Restkit 无法为 HTTP 方法“POST”类型的对象找到可路由路径【英文标题】:Post Json Restkit unable to find a routable path for object of type for HTTP Method 'POST' 【发布时间】:2012-10-29 19:33:45 【问题描述】:

我想向我的服务器发送一个简单的 Json 并通过我的 iPad 应用程序获得 Json 响应。我使用 Restkit 完成所有工作,但 Json 的 POST 存在问题。 这是我想要的简单 Json 请求:

"id_partita":"2"

然后响应会是这样的:

["id":34,"id_dispositivo":"123","id_partita":2,"allenatore":0,"giocatore1":"AAA","giocatore2":"BBB",...]

这是我在 Xcode 中的代码:

-(void) post

    RKURL *baseURL = [RKURL URLWithBaseURLString:@"mysite"];
    RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:baseURL];

    // Setup object mappings
    RKObjectMapping *formazioneMapping = [RKObjectMapping mappingForClass:[Formazione class]];

    [formazioneMapping mapKeyPath:@"id_formazione"
                                toAttribute:@"id_formazione"];
    [formazioneMapping mapKeyPath:@"id_dispositivo"
                                toAttribute:@"id_dispositivo"];
    [formazioneMapping mapKeyPath:@"id_partita"
                                toAttribute:@"id_partita"];
    [formazioneMapping mapKeyPath:@"formazione"
                                toAttribute:@"formazione"];
    [formazioneMapping mapKeyPath:@"giocatore1"
                                toAttribute:@"giocatore1"];
    [formazioneMapping mapKeyPath:@"giocatore2"
                                toAttribute:@"giocatore2"];
;

    // Register our mappings with the provider
    [objectManager.mappingProvider setMapping:formazioneMapping forKeyPath:@""];

    [objectManager.router routeClass:[Formazione class]
                      toResourcePath:@"/formazione/index.php"
                           forMethod:RKRequestMethodPOST];

    // Set serialization MIME type.
    [RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeFormURLEncoded;

    // Configure a serialization mapping for our Formazione class. We want to send id_partita
    RKObjectMapping *formazionePOSTSerializationMapping = [RKObjectMapping
                                                      mappingForClass:[Formazione class]];
    [formazionePOSTSerializationMapping mapAttributes:@"id_partita", nil];

    // Now register the mapping with the provider
    [[RKObjectManager sharedManager].mappingProvider setSerializationMapping:formazionePOSTSerializationMapping forClass: [Formazione class]];

    FormazionePOST *formazionePOST = [[FormazionePOST alloc] init];
    formazionePOST.id_partita = @"2";
    [[RKObjectManager sharedManager] postObject:formazionePOST delegate:self];


但是当我尝试执行它时出现此错误: '无法为 HTTP 方法'POST'的'FormazionePOST'类型的对象找到可路由路径'。

我不明白我的错误是什么,我找不到 POST 和 GET a Json 的简单示例。 感谢您的帮助!

【问题讨论】:

【参考方案1】:

是不是在你的路由器初始化中你引用了 Formazione 类,但你试图发布 FormazionePost 类?

【讨论】:

【参考方案2】:

我已经使用 AfNetworking 而不是 RestKit 解决了我的问题。 他们的文档中有很多关于 JSON 管理的示例。

【讨论】:

以上是关于Post Json Restkit 无法为 HTTP 方法“POST”类型的对象找到可路由路径的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 的 RestKit Post 方法

Rails RestKit POST 请求 json 的根类丢失

使用 RestKit 发送 POST 不会返回 JSON 内容

RestKit POST 发送 JSON 不包含映射路径/类名

RESTKit 对象 BOOL 属性为真/假 JSON

使用 RESTKit 做一个简单的 json POST