1

我正在尝试使用 RestKit 发送请求。我希望它以 JSON 格式发送,但似乎 RKClient 的默认发布方法使用某种 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 序列化我的字典。

4

1 回答 1

0

您可以通过将 RestKit 的serializationMIMEType属性设置为RKMIMETypeJSON来做到这一点。

例如

[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];
于 2012-08-26T21:11:45.677 回答