Как получить правильный ответ при публикации данных формы на php-сервер с помощью eclipse? - PullRequest
0 голосов
/ 08 января 2019

Я отправляю данные json на сервер, но при получении ответа это должно быть так

 {"id":65,"check":1,"date":"08-Jan-19"}

вместо этого я получаю это

{"id":"65check=1","check":null,"date":"08-Jan-19"}

Это код нажатия кнопки. Я отправляю данные формы json на сервер, но в ответ значение id присоединяется к значению проверки, как получить правильный ответ.

Attendance_TimeCheck = "1";
        users_identify = "65";
        try {
           URL urlForPostRequest = new URL("http://xenzet.com/ds/getrec.php");

            System.out.println("Instantiated new URL: " + urlForPostRequest);
            final long id = Long.valueOf(users_identify);
            HttpURLConnection conection = (HttpURLConnection) urlForPostRequest.openConnection();
            conection.setDoOutput(true);
            conection.setRequestMethod("POST");
            conection.setRequestProperty("User-Agent", "Mozilla/5.0");
            conection.getOutputStream().write(("id="+id).getBytes(StandardCharsets.UTF_8));
            conection.getOutputStream().write(("check="+Attendance_TimeCheck).getBytes(StandardCharsets.UTF_8));
            conection.connect();

            BufferedInputStream bis = new BufferedInputStream(conection.getInputStream());
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            int resultBuffer = bis.read();
            while (resultBuffer != -1) {
                bos.write((byte) resultBuffer);
                resultBuffer = bis.read();
            }
            String result1 = bos.toString();
            System.out.println(result1);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Я думаю, что строка читается неправильно.

1 Ответ

0 голосов
/ 08 января 2019

Проверьте полезную нагрузку, которую вы передаете в запрос POST,

conection.getOutputStream().write(("id="+id).getBytes(StandardCharsets.UTF_8));
conection.getOutputStream().write(("check="+Attendance_TimeCheck).getBytes(StandardCharsets.UTF_8));

"id="+id и "check="+Attendance_TimeCheck приведут к "id":"65check=1"

добавьте амперсанд перед параметром запроса check, чтобы получить желаемый результат,

conection.getOutputStream().write(("&check="+Attendance_TimeCheck).getBytes(StandardCharsets.UTF_8));

...