2016-06-29 4 views
0

私は、私がしようとしているのは BodyにNSDictionaryという簡単な形でPOSTを実行することだけです。ここに私がrac_POSTと返すものがあります。HTTP本文を正しく投稿するにはどうすればよいですか?

return [[[self rac_POST:[NSString stringWithFormat:@"reservations/%@/update",reservationID] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData){ 
    [formData appendPartWithHeaders:@{@"Content-Type":@"application/json"} body:jsonData]; 
    [formData appendPartWithFormData:jsonData name:@"payload"]; 

}] map:^id(RACTuple *t) { 
    RACTupleUnpack(NSDictionary * result) = t; 
    return result; 
}] catch:^RACSignal *(NSError *error) { 
     return [self customErrorSignal:error]; 
}]; 

私は非常に多くの方法を試みたが、それはちょうど適切に私のAPIPOSTINGではありません。

NSMutableDictionary *payloadDict = [[NSMutableDictionary alloc]init]; 
[payloadDict setObject:payloadArray forKey:@"payload"]; 
NSData *jsonData = [NSKeyedArchiver archivedDataWithRootObject:payloadDict]; 

私は私の方法で何をしないのです。私はこのように私のNSDictionaryNSDataに変換していますか?

body(上記のコードでpayloadDict)をパラメータdictionaryに追加しようとしましたが、機能しませんでした。内部のAPI文書によれば、具体的には、本体HTTPの一部としてpayloadDictを追加すると言いました。これがまったく違うかどうかを誰かが明確にすることはできますか?

答えて

1

あなたはあなたのサービスはデータのJSON形式を受け入れるなら、あなたは、データの代わりに、NSKeyedArchiverにルートオブジェクトを変換するためにNSJSONSerializationを使用する必要があります

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:questionDict options:0 error:nil]; 
+0

[formData appendPartWithHeaders:@ {@ "Content-Type":@ "application/json"} body:jsonData];これはBodyに追加するのに使用する正しい方法ですか? [formData appendPartWithFormData:jsonData name:@ "payload"]を使用する必要があります。 –

+0

NSJSONSerializationに変更しましたが、まだエラーが発生しています –

+1

この行を削除しようとすることができます[formData appendPartWithFormData:jsonData名:@ "payload"];再度確認してください –

0

この方法を使用したNSDataにNSDictionaryのを変換することができます。

関連する問題