0

最初に言いたいのは、私は Android と Java の初心者です (程度は低いですが)。クライアント/サーバー アプリケーションがあり、クライアントは Android アプリで、サーバーは Tomcat を実行しています。私がこれに慣れていないことを考えると、POSTリクエストについて少し混乱しています。クライアントにはいくつかのテキスト フィールドがあり、ユーザーは情報を入力し、POST タスクを適切に実行するメソッドを呼び出すボタンを押します。サーバーがクライアントの POST フォームからデータを受信して​​いることがわかりますが、私の質問は、(フォームからの) その情報がどこに行くのかということです。新しいリソース (この場合は Person リソース) を作成することになっています...これは、POST を実行する PersonResource クラスのコードです。

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Person postPerson(MultivaluedMap<String, String> personParams) {
    String firstName = personParams.getFirst(FIRST_NAME);
    String lastName = personParams.getFirst(LAST_NAME);
    String email = personParams.getFirst(EMAIL);

    System.out.println ("System storing: " + firstName + " " + lastName + " " + email);

    person.setFirstName(firstName);
    person.setLastName(lastName);
    person.setEmail(email);

    System.out.println ("person info: " + person.getFirstName() + " " + person.getLastName() + " " + person.getEmail() + " " + person.getId());

    return person;
}

個人リソースを返しますが、最終的にその個人リソースはどこに行くのでしょうか? この問題を解決するために必要なすべての情報を提供していない場合は、申し訳ありません。さらに情報が必要な場合は、喜んで提供します。私は与えられた助けに本当に感謝しています。ありがとうございました。

4

2 に答える 2

0

HttpPost を使用してリクエストを送信し、gson を使用してレスポンスをオブジェクトに戻すことができます。HttpPost は、非同期リクエスト (つまり、AsyncTask) の下に配置する必要があります。参照できます

http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

非同期HTTPポストアンドロイド

http://code.google.com/p/google-gson/

于 2013-01-02T04:26:21.977 に答える
0

質問を完全に理解しているかどうかはわかりませんが、役立つ概要を以下に示します。

クライアント POST は、HTTP 要求をサーバーに送信します。サーバーには、リクエストを処理する何らかの Web サービス フレームワーク (Jersey や CXF など) が必要です。クラスの JAX-RS アノテーション (@POST および @Consume) は、要求をクラスのpostPersonメソッドにルーティングするよう Web サービス フレームワークに指示します。これだけ効いているようですね。

メソッドは、フォームのコンテンツ、つまりユーザー入力に基づいて Person オブジェクトを作成します。メソッドは、この Person を Web サービス フレームワークに返します。

では、この人はどうなるのでしょう?提供した @Produces アノテーションは、Web サービス フレームワークに人物の JSON 表現を生成し、これをクライアントに返される HTTP 応答の本文に含めるように指示します。応答は次のようになります。

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 259
{"fistName":"Bob", "lastName":"Barker", "email":"bob_bark@priceisright.com"}

これはあなたが探していたものですか?

于 2013-01-02T03:24:48.417 に答える