发送到服务器时JSON数据丢失

时间:2017-08-17 07:02:21

标签: java android json node.js

当我解析JSON对象时,它会以正确的格式轻松解析。但是,只要我向服务器端发送相同的内容,就会丢失值。

    JSONArray check0 = new JSONArray();
    JSONArray check1 = new JSONArray();
    JSONArray check2 = new JSONArray();

    check0.put(v11);
    check0.put(v12);
    check0.put(v13);

    check1.put(c11);
    check1.put(c12);
    check1.put(c13);

    check4.put(t11);
    check4.put(t12);
    check4.put(t13);


    draft.put("check2",id11);
    draft.put("check3",t11);

    draft.put("check0",check0);
    draft.put("check1",check1);
    draft.put("check4",check4);    

其中v11,v12 ....... t12,t13是字符串变量。

我发送数据的代码:

URL url = new URL("http://10.0.2.2:8080/initial");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("USER-AGENT", "Mozilla/5.0");
connection.setRequestProperty("ACCEPT-LANGUAGE", "en-US,en;0.5");
connection.setDoOutput(true);
DataOutputStream dStream = new 
DataOutputStream(connection.getOutputStream());
System.out.println(draft.toString());
dStream.writeBytes(draft.toString());

System.out:

{"Check1":["5","4","4"],"Check0":["6","44","4"],"Check2":"17082017123406","Check4":"1228123682","Check3":["4","4","4"]}

接收邮寄请求的代码:

app.post('/initial', function(req, res){

console.log("POST received: "+ JSON.stringify(req.body));

res.end("cool");
});

控制台输出 收到POST:

{"{\"Check1\":":{"\"5\",\"4\",\"4\"":{"\"6\",\"44\",\"4\"":{"\"4\",\"4\",\"4\"":""}}}}

1 个答案:

答案 0 :(得分:0)

尝试使用以下

con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

实施例

private JSONObject uploadToServer() throws IOException, JSONException {
        String query = "https://example.com";
        String json = "{\"key\":1}";

        URL url = new URL(query);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(5000);
        conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setRequestMethod("POST");

        OutputStream os = conn.getOutputStream();
        os.write(json.getBytes("UTF-8"));
        os.close();

        // read the response
        InputStream in = new BufferedInputStream(conn.getInputStream());
        String result = org.apache.commons.io.IOUtils.toString(in, "UTF-8");
        JSONObject jsonObject = new JSONObject(result);


        in.close();
        conn.disconnect();

        return jsonObject;
}