0

ブール値の配列をサーブレットに送信しようとしています。これは私がこれまで行ってきたことであり、私はとても行き詰まっています:

HttpClient client = new DefaultHttpClient();  
    String postURL = "http://APP_NAME.appspot.com/listenforrestclient";
    HttpPost post = new HttpPost(postURL);
        List<NameValuePair> params = new ArrayList<NameValuePair>();

        for (int i=0; i<arrBool.length; i++) {
        arrBool[i] = r.nextBoolean();
        String[] user = {"","","","","",""};
        if (arrBool[i] == true) {
            params.add(new BasicNameValuePair("user[i]", arrBool.toString()));
        }
        else if (arrBool[i] == false) {
            params.add(new BasicNameValuePair("user[i]", arrBool.toString()));
    }
        }
        UrlEncodedFormEntity ent = new UrlEncodedFormEntity(params,HTTP.UTF_8);
        post.setEntity(ent);
        HttpResponse responsePOST = client.execute(post);  
        HttpEntity resEntity = responsePOST.getEntity();  
        if (resEntity != null) {    
            System.out.printf("RESPONSE: ", EntityUtils.toString(resEntity));
        }
} catch (Exception e) {
    e.printStackTrace();
}

user[i], "user[i]", user. それでも見つかりませんでした。

そして私が持っているサーブレットで:

 public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException 
{
    resp.setContentType("text/plain");

    for (int i=0; i<mmaa.length; i++) {
        mmaa = req.getParameterValues("user");
        resp.getWriter().println(mmaa[i]);
    }

}

私はオンラインでたくさん検索しましたが、適切なものが見つかりませんでした。誰かがこれを手伝ってくれたら本当にありがたいです。

ありがとう

4

2 に答える 2

2

あなたが持っているparams.add(new BasicNameValuePair("user[i]", arrBool.toString()));

しかし、あなたの鍵は string"user[i]"です。String.format("user[%d]", i)代わりに使用してください。だから、変えて

params.add(new BasicNameValuePair("user[i]", arrBool.toString()));

params.add(new BasicNameValuePair(String.format("user[%d]", i), arrBool.toString()));

サーブレットでは、次のようにしてパラメーター値を取得します。

for(int i = 0; i < ...){
    String value = request.getParameter(String.format("user[%d]", i);
    //process value  
}
于 2013-02-28T06:10:42.290 に答える
1

params.add(new BasicNameValuePair("user[i]", arrBool.toString()));これを試してみる代わりに、新しいオブジェクトを追加しています

params.add(new BasicNameValuePair(user[i].toString(), arrBool.toString()));

サーブレットでは、最初にリクエストパラメーターから配列リストを取得する必要があり、配列リストの各値に対して同じ BeanNameValuePair のオブジェクトを作成し、getValue()check を使用して値を取得する必要がありますサーブレットで値を適切に取得しているかどうかを最初に確認しますデバッグによってArrayListを適切に取得します。

于 2013-02-28T06:36:53.610 に答える