【问题标题】:i want to POST data to server using RestKit,but it doesn't work and return 400我想使用 RestKit 将数据发布到服务器,但它不起作用并返回 400
【发布时间】:2013-12-02 10:35:43
【问题描述】:

我想使用 RestKit 将数据发布到服务器。所以我根据https://github.com/RestKit/RestKit写我的代码。

RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[Post class]];
[responseMapping addAttributeMappingsFromArray:@[@"code", @"error",@"bookingNmbr"]]; 
//code,error,bookingNmbr are the parameters returned by server if i post data successfully

NSIndexSet *statusCodes = RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful);
RKResponseDescriptor *appliersDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping method:RKRequestMethodAny pathPattern:nil keyPath:nil statusCodes:statusCodes];

RKObjectMapping *requestMapping = [RKObjectMapping requestMapping]; 
[requestMapping addAttributeMappingsFromArray:@[@"a", @"b", @"dcmnNmbr",@"type"]];
//a,b,dcmnNmbr,type are the parameters what i want to post to the server (into a json file). The structure of the json file is :{"appliers":[{"a":"F","b":9,"dcmnNmbr":"b","type":"c"}]}

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping objectClass:[Post class] rootKeyPath:@"appliers" method:RKRequestMethodAny];

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:urlPost]];
[manager addRequestDescriptor:requestDescriptor];
[manager addResponseDescriptor:appliersDescriptor];

Post *post = [Post new];
post.a = @"aa";
post.b = 11;
post.dcmnNmbr = @"bb";
post.type = @"cc";

NSDictionary* params = [NSDictionary dictionaryWithObject:post forKey:@"appliers"];

[RKObjectManager sharedManager].requestSerializationMIMEType = RKMIMETypeJSON;

[manager postObject:params path:urlPost parameters:nil success:nil failure:nil];

以下是结果(代码:400)。它说结构有问题:“未找到应用程序”。

E restkit.network:RKObjectRequestOperation.m:576 Object request failed: Underlying HTTP request operation failed with error: Error Domain=org.restkit.RestKit.ErrorDomain Code=-1011 "Expected status code in (200-299), got 400" UserInfo=0xc8bd5b0 {NSLocalizedRecoverySuggestion={"code":-400,"error":"appliers Not Found"},

所以请你告诉它有什么问题。

【问题讨论】:

    标签: post restkit restkit-0.20


    【解决方案1】:

    这一行:

    NSDictionary* params = [NSDictionary dictionaryWithObject:post forKey:@"appliers"];
    

    不是必需的(而且您实际上并没有使用)。

    您根据需要显示的 JSON 是字典中的 Post 对象数组。目前,您应该在字典中找到字典。您可以使用 Charles 或类似工具进行检查。

    要获得您正在寻找的数组输出,请发布一个数组:

    [manager postObject:@[ post ] path:urlPost parameters:nil success:nil failure:nil];
    

    【讨论】:

    • 我已经更改了我将发布 NSDictionary 对象(参数)的代码。错误仍然存​​在。你知道为什么
    猜你喜欢
    • 2014-11-09
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2013-02-18
    相关资源
    最近更新 更多