我正在尝试向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]);
}
}
我在网上搜索了很多,找不到合适的东西。如果有人能帮助我,我真的很感激。由于
答案 0 :(得分: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
}
答案 1 :(得分:1)
您正在添加params.add(new BasicNameValuePair("user[i]", arrBool.toString()));
的新对象,而不是尝试
params.add(new BasicNameValuePair(user[i].toString(), arrBool.toString()));
首先在servlet中,你需要从request参数中获取数组列表,并为数组列表中的每个值创建一个具有相同BeanNameValuePair的对象,并使用getValue()
检查它的值。检查是否得到了servlet中的值正确检查是否通过调试正确获取ArrayList。