私はWebサービスを初めて使用し、GETを正常に機能させています。POSTしようとすると、次のJSON文字列を送信します。
{"frequency":"None","leader":"test@test.com"}
しかし、サーバーはこれを期待しています:
{
"meta":
{"limit": 20, "total_count": 2},
"objects":
[{"frequency": "None", "leader": "jsmith@gmail.com"},
{"frequency": "None", "leader": "jsmith@gmail.com"}]
}
NewMeetingRKオブジェクトで、次のように「オブジェクト」にマップしようとしています。
mgr.serializationMIMEType = RKMIMETypeJSON;
RKObjectMapping* newmtg = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[newmtg mapKeyPath: @"frequency" toAttribute:@"repeat" ];
[newmtg mapKeyPath: @"leader" toAttribute:@"leader" ];
RKObjectMapping* newmtgSerializeMapping = [newmtg inverseMapping];
[mgr.mappingProvider setSerializationMapping:newmtgSerializeMapping forClass:[NewMeetingRK class]];
[mgr.mappingProvider setMapping:newmtgSerializeMapping forKeyPath:@"objects"];
[mgr.router routeClass:[NewMeetingRK class] toResourcePath:@"" forMethod:RKRequestMethodPOST];
これは機能していません。toResourcePathを@"/objects"に変更しようとしましたが、それも機能しませんでした。サーバー上のJSON値の2番目のセットに値を送信する方法はありますか?
- -編集 - -
@HotLicksが指摘したように、配列が欠落していました-ありがとう。しかし、JSON値を使用した単純な投稿を機能させることはできません。
RKObjectManagerの代わりに、このようなRKClientで簡単なことを行うことができますか?
client = [RKClient clientWithBaseURL:[RKURL URLWithBaseURLString:@"https://appzute.appspot.com"]];
NSLog(@"I am your RKClient singleton : %@", [RKClient sharedClient]);
client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
[client setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSMutableArray *meetingArray = [NSMutableArray arrayWithCapacity:100];
[meetingArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:
self.leaderEmail.text, @"leader",
self.repeatLabel.text, @"frequency",
nil]];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjectsAndKeys:meetingArray, @"objects", nil];
NSString *jsonString = [jsonDictionary JSONRepresentation];
NSLog (@"jsonString is: %@",jsonString);
[client post:@"/api/meeting/?format=json&username=testuser@test.com&api_key=sdf7asd87fs8df78sdf" params:jsonString delegate:self];
jsonStringの値は完璧に見えます:{"objects":[{"leader": "me@me.com"、 "frequency": "None"}]}問題は、params:jsonStringが必要なため無効であるということです。文字列ではなくオブジェクト。しかし、params:jsonDictionaryを使用すると、次のログファイルが取得されます。送信済みRKRequest:objects [] [leader] = me%40me.com&objects [] [frequency] = None I restkit.network:RKRequest.m:676ステータスコード:500
何が間違っている可能性がありますか?
ありがとう!