2012-08-22 21 views
1

我試圖發送使用RestKit請求發送JSON。我希望它以JSON發送,但似乎來自RKClient的默認post methot使用某種FORM數據格式(我使用[請求HTTPBodyString]檢查它)。使用簡單RKClient後

我需要使用簡單的POST,這樣的(我不使用對象映射)發送數據:

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

我找到了一些解決方案,使用NSJSONSerialization,但該方法崩潰,當我把NSDate的對象在我的JSON字典中。

有沒有辦法告訴RKClient使用JSON發送請求?

更新: params爲一的NSDictionary。我希望能夠通過POST發送它時告訴RestKit使用JSON序列化我的字典。

回答

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。

更新

實施例用於發佈一個普通的JSON String與正確Mime類型:

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

更新2:

獲取JSON從一個的NSDictionary對象:

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

這不適用於簡單投遞像我的問題的例子中工作(僅適用於序列化對象) –

+0

這是不正確的。我發佈了一個普通的JSON字符串。看我上面的例子。 – High6

+0

是的,但你如何獲得jsonString?問題是:當我提供一個NSDictionary時,RestKit是否提供了通過POST發送json序列化數據的簡單方法? –