0

我正在尝试将布尔值数组发送到 servlet。这是我到目前为止所做的,我很困惑:

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();
}

我试图只做用户[i],“用户[i]”,用户。还是没找到。

在 servlet 上我有:

 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()));

但你的关键是字符串"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()));

在 servlet 中,您可以通过以下方式获取参数值:

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()));

首先在servlet中,您需要从请求参数中获取数组列表,并为数组列表中的每个值创建一个具有相同BeanNameValuePair的对象并使用检查从中检索值getValue()是否在servlet中正确获取值首先检查是否您通过调试正确获取 ArrayList。

于 2013-02-28T06:36:53.610 回答