2012-06-18 8 views
5

AFHTTPClientメソッド "postPath"を使用して、1つのパラメータキーに複数の値をHTTPリクエストに渡そうとしています。しかし、パラメータ変数はNSDictionaryなので、キー "email"には複数の値を設定できません。電子メールの値をコンマ区切りの文字列として送信しようとしましたが、サーバーが電子メールの値を指定していないというエラーが返されても機能しません。AFNetworking - 1つのキーに複数の値を指定する方法

multipartFormRequestWithMethodメソッドの使用方法に関するドキュメントを読みましたが、この作業を行う方法を完全に理解できませんでした。誰でもこのメソッドを単一のキーに対して複数の値で使用する例を提供できますか?

リッチ

+0

NSDictionaryの重複キーを許可しないので、これはあなたの特定のユースケースを満たすのを防ぐことができます。 あなたができることは、このメソッドで作成したNSMutableURLRequestを取得し、POST本体文字列を手動で構築することです。 –

答えて

2

おかげであなたは、単一のキーに複数の値を定義することはできません。ただし、キー自体に複数の値が含まれている配列を持つようにキーを定義することはできます。

つまり、emailは複数の定義を持つ必要があります。複数の値を受け入れる場合は、おそらくそのパラメータの名前をemailsに変更する必要があります。

+0

お返事ありがとうございます。私はNSArrayの電子メールパラメータを渡そうとしましたが、サーバは同様に私が電子メールアドレスを渡していないと回答しました。何か案は? –

+0

AFNetworkingのコードは「電子メール」の鍵を受け取り、それを「電子メール[]」に変換しているように見えます。これは、サーバーが渡された電子メールアドレスを認識しない理由です。これが起こらないようにする方法はありますか? –

+0

@RichMoreyそれは一種のポイントです: 'email []'は、複数の値が渡されていることを示すためにRailsのような多くのフレームワークで使用される規約です。あなたはAPIを書いたのですか?このような検証を取得している場合、サーバーはただ1つの電子メールを望んでいるようです。なぜそれをしないのですか? – mattt

4

1つのキーに複数の値を組み合わせる。たとえばNSDictionaryの+ NSArrayの

を使用して

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"param1", @"value2", @"param2", [NSArray arrayWithObjects:@"value3",@"value4",@"value5",nil], @"param3", nil]; 

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"/yourhostpath" parameters:params]; 

あなた自身に "URL" と "yourhostpath" を交換する必要があるが、このためにAFNetworkingのAFHttpClientデモコードを参照してください。

12

1つのキーに複数のクエリ値を組み合わせる。

NSDictionary + NSSetを使用すると、NSArrayから[]を除いたクエリURLを取得します。

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: 
[NSSet setWithObjects:@"value1", @"value2", nil], @"myKey", nil]; 

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; 
NSURLRequest *request = [httpClient requestWithMethod:@"GET" path:@"/path" parameters:params]; 

PS:ないより遅れて...

+0

複数のパラメータを同じ値で送信したい場合はどうすればよいですか?これは、 '[NSSet setWithObjects:@" value1 "、@" value1 "、@" value2 "、@" value2 "、nil]' は機能しません。 – krotov

関連する問題