在Java中的键值对中传递JSON数组

问题描述:

我正在尝试使用Java中的rest webservice发送数据.我可以在POST中使用Java发布数据,但是现在我需要在rawModeData中发送数据,并且还需要在SurveysData键中发送JSONArray.

I'm trying to send data using rest webservice in Java. I'm able to post data using Java in POST but now I need to send data in rawModeData and I also need to send JSONArray in surveysData key.

请找到附件的屏幕截图

这是我用来发送数据的代码

This is the Code that I'm using to send data

try {
        URL url = new URL(webServiceData.getSyncSurveyDataUrl());

        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();

        // ConnectionType
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setDoOutput(true);
        httpURLConnection.setDoInput(true);
        httpURLConnection.setUseCaches(false);
        httpURLConnection.setAllowUserInteraction(false);
        httpURLConnection.setRequestProperty("charset", "utf-8");
        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        // Create the output form content
        OutputStream out = httpURLConnection.getOutputStream();
        Writer writer = new OutputStreamWriter(out, "UTF-8");

        JSONObject objects = new JSONObject();

        objects.put("constituency", constituency);
        objects.put("longitude", longitude);
        objects.put("latitude", latitude);
        objects.put("createdOn", createdOn);

        for (Map.Entry<String, String> map : linkedHashMap.entrySet()) {
            objects.put(map.getKey(), map.getValue());
        }

        writer.write("createdByDeviceId");
        writer.write("=");
        writer.write(URLEncoder.encode(loginModel.getDeviceId(), "UTF-8"));
        writer.write("&");
        writer.write("createdByMobileNumber");
        writer.write("=");
        writer.write(URLEncoder.encode(loginModel.getMobileNumber(), "UTF-8"));
        writer.write("&");
        writer.write("state");
        writer.write("=");
        writer.write(URLEncoder.encode(loginModel.getLoggedInState(), "UTF-8"));
        writer.write("&");
        writer.write("eventId");
        writer.write("=");
        writer.write(URLEncoder.encode(loginModel.getEventId(), "UTF-8"));
        writer.write("&");
        writer.write("surveysData");
        writer.write("=");
        writer.write(URLEncoder.encode(objects.toString(), "UTF-8"));

        if (httpURLConnection.getResponseCode() != 200) {
            System.out.println("Exception in 200: " + httpURLConnection.getResponseCode());
            System.out.println("Exception Message: " + httpURLConnection.getResponseMessage());
            /*errorLabel.setText(httpURLConnection.getResponseMessage());
            errorLabel.setVisible(true);*/
        }
    } catch (Exception e) {
        return false;
    }

我收到401错误消息

我认为您在标头中错过了一些身份验证令牌.类似于:httpURLConnection.setRequestProperty("tokenKey","yourAuthToken");

I think you missed some authentication token in headers. Something like : httpURLConnection.setRequestProperty("tokenKey", "yourAuthToken");