0

サーブレットを使用してAndroidからJava Tomcatサーバーにリクエストを送信したい場合、サーバーは巨大なデータをクライアントに送信します。データには多くの行が含まれ、すべての行には3つのパラメーターがあります。

competitionID, marks, numberOfQuestions

Androidからサーバーにリクエストを送信するコード

HttpClient client = new DefaultHttpClient();
        URI website;
            website = new URI("http://" + HostIP
                    + ":8080/LocalizedBasedComptitionServer/JoinCompetition");
            HttpPost request = new HttpPost();
            request.setHeader("ID", ID + "");
            request.setURI(website);
            HttpResponse response = client.execute(request);

サーブレット コード

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletOutputStream out = response.getOutputStream();
        CellDatabase cDB = new CellDatabase();
                List<String[]>list = new LinkedList<String[3]>();
        out.flush();
    }

リストの送信list方法と受信方法を教えてください。

4

1 に答える 1

2

これを実現するには、いくつかの方法があります。

1. 応答を JSON 配列としてフォーマットします。例:

[ 
   { competitionId : "6", marks : "2", numberOfQuestions : "3"},
   { competitionId : "2", marks : "1", numberOfQuestions : "5"},
]

次に、クライアントはこの JSON 文字列を配列に解析します

2.独自の区切られた文字列の結果を作成します。例: 6,2,3|2,1,5

応答が 3 つの要素の配列になることがわかっているので、最初に項目を特殊文字「|」で区切り、次に各配列項目を区切り文字「,」で再度分割すると、競合 ID、マーク、および質問数。

この方法は迅速かつ簡単ですが、保守が困難です。新しい要素を追加/削除したり、サーバー側で区切り文字を変更したりすると、クライアントが壊れます。したがって、JSON メソッドを使用するのがおそらく最善の方法です。

于 2012-07-04T22:25:33.133 に答える