ios - 使用RestKit发出POST请求

标签 ios objective-c post restkit

我想使用RestKit发出POST请求,我使用方法postObject使用RKObjectManager。请求的主体是整数数组,JSON表示类似于[2348、9864、3645]。我为服务响应添加了RKResponseMapping并可以正常工作,但是在服务端,数组始终为null。我必须添加什么是RKRequestMapping?我想念什么?

我的代码如下所示:

- (void) sendPOSTRequest:(NSArray*) postBody{
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:baseUrl]];

RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[RKJSONArrayResponse class]];

[responseMapping addAttributeMappingsFromDictionary:@{ @"Code" : @"code",
                                                       @"Success":@"success",
                                                       @"Content":@"content",
                                                       @"Error": @"error"}];

RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
                                                                                method:RKRequestMethodPOST
                                                                           pathPattern:@"/api/Requisitions/SendReport"
                                                                               keyPath:nil
                                                                           statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[NSArray class]];

RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
                                                                               objectClass:[NSArray class]
                                                                                rootKeyPath:nil,
                                                                                    method:RKRequestMethodPOST];

[manager addRequestDescriptor:requestDescriptor];

[manager addResponseDescriptor:responseDescriptor];

[self.manager postObject:postBody
                    path:@"/api/Requisitions/SendReport"
              parameters:nil
                 success:success
                 failure:failure];
}

服务代码是使用Web Api用C#编写的,在这里您将始终将变量“report”接收为null。
public JsonResponse<int[]> SendReport(int[] report){}

最佳答案

您有2种方法可以解决此问题:

  • 如果您想正确完成操作,则需要为整数值数组创建RKObjectMapping,然后创建将使用新创建的RKRequestDescriptorRKObjectMapping,然后使用RKRequestDescriptor方法将此RKObjectManager添加到– addRequestDescriptor:中。这将使RestKit根据您的postObject
  • 将您要传递给RKObjectMapping方法的对象转换为JSON
  • 我不推荐这种方式。但是,如果您只是想玩转,看看可以做些什么,那么应该将整数数组作为parameters参数传递,如下所示:

    NSArray * body = @ [@ @ 1234,@ 7475,@ 4432];

    [manager postObject:nil path:@“/ send”参数:body ...]

  • 当心,该参数参数为NSDictionary,但是如果您传递NSArray,它将起作用并会触发警告。
    再次,花些时间熟悉RKRequestDescriptorRKObjectMapping

    如果您想了解有关最佳RestKit设置以及如何使用很少的ObjectManagers构建可维护应用程序的更多信息。

    关于ios - 使用RestKit发出POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832381/

    相关文章:

    objective-c - 玻璃效果 UIView

    ios - parse.com PFQueryTableViewController多次返回同一对象

    ios 将 UIScrollView 滚动条颜色更改为不同的颜色

    iphone - 我可以将peakPowerForChannel转换为dB吗?

    objective-c - ObjC/核心数据。如何从另一个 NSArrayController 更改实体的键值?

    java - 如何使用 JSoup 发布文件?

    ios - 如何快速获取选定日期的日期名称?

    ios - 以编程方式添加一个 iOS 6 外观相似的渐变 UIButton

    php - 虚拟 PHP 表单

    android - retrofit 2 动态设置零件参数名称