6

ねえ、NSDictionary オブジェクトの配列を使用して HTTP POST リクエストを作成する必要があります。

ただし、これを行うと、サーバー側で NSDictionary オブジェクトがハッシュに逆シリアル化されていないことに気付きます。文字列に逆シリアル化されます-これは私が望むものではありません。

これは、クライアント (iPhone) 側からパラメーターを送信する方法です。

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
for (ABContact *c in contactsWithEmailsOrPhones){
  NSString *phoneNumber = [[ABContactsHelper class] contactPhoneNumber:c];
  NSString *email = [[c emailArray] objectAtIndex:0];
  NSLog(@"looping: %@, %@", phoneNumber, email);
  NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                         phoneNumber,
                         @"phone", 
                         email,
                         @"email", 
                         [c firstname],
                         @"firstname",
                          [c lastname],
                          @"lastname", nil];

    [request addPostValue:dict forKey:@"contacts[]"];
}

[request setDelegate:self];
[request startAsynchronous];

サーバー (レール) 側でデシリアライズすると、次のようになります。

Started POST "/app/find_friends" for 67.164.97.48 at Thu Sep 23 14:40:37 -0700 2010
Processing by app#find_friends as HTML
Parameters: {"contacts"=>["{\n    email = \"xx\";\n    firstname = xx;\n    lastname = xx;\n    phone = \"xx\";\n}", "{\n    email = \"xx\";\n    firstname = xx;\n    lastname = xx;\n    phone = \"xx\";\n}"]}
Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)

これは人々が直面する共通の問題だと確信しています。したがって、これには間違いなく解決策があります。

すべてのコメント/回答に感謝します。

4

2 に答える 2

2

まず、あなたが見ているものを説明するには:

addPostValue メソッドは単一の値を受け取るように設計されており、[value description] を呼び出してその値を文字列に変換します。description メソッドは、サーバー側で見ている文字列表現を提供します ( description メソッドは、オブジェクトを渡す場合に NSLog が呼び出すものでもあるため、形式は非常に見慣れているはずです)。そのため、iPhone は文字列を送信するように求められており、サーバーはそれを文字列として「正しく」表示しています。

連絡先を 1 つだけ送信したい場合は、キーと値のペアごとに「addPostValue」を呼び出すだけです。1 回は電話用、2 回目はメール用など。

複数の連絡先を渡したい場合は、おそらくもっと良いものが必要です。私は ruby​​-on-rails にあまり詳しくないので、他の解決策があるかもしれませんが、より複雑なデータ構造を iPhone から Web サービスに渡す一般的な方法は、確かに json を使用することです。

ここにiPhone用のjsonライブラリがあります:

http://code.google.com/p/json-framework/

また、Ruby on Rails には json サポートが組み込まれています。

于 2010-09-24T04:38:32.417 に答える