我正在尝试使用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序列化我的字典。
答案 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];