如何从客户端(java或Android)发送JsonArray到servlet(服务器)

时间:2013-03-11 07:58:06

标签: java android json

我必须将此JsonArray与HTTP请求从客户端发送到服务器,并且必须将其提取到servlet页面。没有NameValuePair类,因为我的要求不同。

任何帮助将不胜感激。

听到的是我用来发送参数的一些代码,但这次是jsonArray,所以我无法使用它

   Map<String, String> params = new HashMap<String, String>();
   params.put(Constants.NAME, name);

然后建立身体。

 StringBuilder bodyBuilder = new StringBuilder();
Iterator<Entry<String, String>> iterator = params.entrySet().iterator();
// constructs the POST body using the parameters
while (iterator.hasNext()) {
    Entry<String, String> param = iterator.next();
    bodyBuilder.append(param.getKey()).append('=')
            .append(param.getValue());
    if (iterator.hasNext()) {
        bodyBuilder.append('&');
    }
}
String body = bodyBuilder.toString();

然后是HTTP请求。

 conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.setFixedLengthStreamingMode(bytes.length);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type",
                "application/x-www-forurlencoded;charset=UTF-8");
        // post the request
        OutputStream out = conn.getOutputStream();

        out.write(bytes);

2 个答案:

答案 0 :(得分:3)

这样您就可以将JSON数组发送到服务器

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);

StringEntity se = new StringEntity(jsonArray.toString());
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httppost.setEntity(se);

HttpResponse response = httpclient.execute(httppost);

Servlet你可以像这样读取json数组(在Servlet中的doPost方法中使用这段代码):

StringBuilder sb = new StringBuilder();
BufferedReader br = request.getReader();
String str;
while( (str = br.readLine()) != null ){
    sb.append(str);
}    
JSONArray jArr = new JSONArray(sb.toString());

答案 1 :(得分:1)

Ahhhhhh ...略去额外的工作......对于那些理解我的问题的人,我发布了答案...使用我在问题中提到的那种方法你可以简单地接收JsonArray到Servlet ..

如我提到的那样把它放到params中

params.put("json", jsonArray.toString());

然后在servlet中接收..

    String jsonArray=request.getParameter("json");
    JSONArray jArr = new JSONArray(j.toString());