使用简单的RKClient帖子发送JSON

时间:2012-08-22 16:02:45

标签: objective-c restkit

我正在尝试使用RestKit发送请求。我希望它以JSON发送,但似乎RKClient的默认post methot使用某种FORM数据格式化(我使用[request HTTPBodyString]检查它)。

我需要使用简单的POST发送数据,就像这样(我没有使用对象映射):

[[RKClient sharedClient] post:path usingBlock:^(RKRequest* req) {
    req.params = params;
    req.delegate = self;
}];

我找到了一些使用NSJSONSerialization的解决方案,但是当我将NSDate对象放入我的JSON字典时,该方法崩溃了。

有没有办法告诉RKClient使用JSON发送请求?

更新: params是一个NSDictionary。我希望能够告诉RestKit在通过POST发送时使用JSON序列化我的字典。

1 个答案:

答案 0 :(得分:0)

您可以通过将RestKit的serializationMIMEType属性设置为 RKMIMETypeJSON 来执行此操作。

E.g。

[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeJSON;
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;

另见http://restkit.org/api/master/Classes/RKObjectManager.html

  

通过设置所需的序列化格式   serializationMIMEType属性。 RestKit目前支持   序列化为RKMIMETypeFormURLEncoded和RKMIMETypeJSON。

<强>更新

使用正确的Mime类型发布普通JSON字符串的示例:

RKParams *params = [RKRequestSerialization serializationWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding]
                                                        MIMEType:RKMIMETypeJSON];
[[RKObjectManager sharedManager].client post:@"/mypath"
                                      params:params
                                    delegate:self];

更新2:

从NSDictionary对象获取JSON:

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myNSDictionaryObject
                                                   options:NSJSONWritingPrettyPrinted
                                                     error:&error];
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];