0

この JsonArray を HTTP リクエストとともにクライアントからサーバーに送信し、それをサーブレット ページにフェッチする必要があります。要件が異なるため、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);
4

2 に答える 2

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

サーブレットでは、次のように json 配列を読み取ることができます (サーブレットの 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());
于 2013-03-11T08:23:28.677 に答える
1

ああ...余分な作業を少しスキップします..私の質問を理解している人のために、回答を投稿しています...質問で述べた方法を使用すると、JsonArrayをサーブレットに簡単に受け取ることができます..

私が述べたように、これをparamsに入れてください

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

そして、サーブレットで受信する..

    String jsonArray=request.getParameter("json");
    JSONArray jArr = new JSONArray(j.toString());
于 2013-03-11T09:16:02.207 に答える