1

RestKit を使用してリクエストを送信しようとしています。JSONで送信したいのですが、RKClientからのデフォルトのpostメソッドはある種のFORMデータフォーマットを使用しているようです([request HTTPBodyString]を使用して確認しています)。

次のように、単純な POST を使用してデータを送信する必要があります (オブジェクト マッピングは使用していません)。

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

NSJSONSerialization を使用するソリューションをいくつか見つけましたが、NSDate オブジェクトを JSON 辞書に入れると、そのメソッドがクラッシュします。

JSONを使用してリクエストを送信するようにRKClientに指示する方法はありますか?

更新: params は NSDictionary です。POST で送信するときに、JSON を使用して辞書をシリアル化するように RestKit に指示できるようにしたいと考えています。

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 に答える