org. json .JSONException: конец ввода с 0 символа (Android) - PullRequest
0 голосов
/ 20 февраля 2020

Я генерирую метод JsonObjectRequest.PUT через веб-сервис. Метод PUT успешно достигнут (он обновляет объект в базе данных), но по какой-то причине выдает мне эту ошибку org.json.JSONException: End of input at character 0 of Я не могу понять причину. Несмотря на сообщение об ошибке и приложение cra sh, оно обновляет базу данных в соответствии с запросом, есть идеи по ее решению?

это часть фрагмента, в котором я делаю запрос:

private void putRequest(int idTarea, String nombreTarea, int id_asignatura, int id_estudiante, double nota) {

    String url = "http://192.168.100.113:8090/WebServiceNextUSchool/webapi/tareas/" + idTarea;

    JSONObject jsonObject = new JSONObject();

    try {
        jsonObject.put("nombre_tarea", nombreTarea)
                .put("nota", nota)
                .put("id_estudiante", id_estudiante)
                .put("id_asignatura", id_asignatura)
                .put("id_tarea", idTarea);
    } catch (JSONException e) {
        e.printStackTrace();
    }

    RequestQueue queue = Volley.newRequestQueue(getContext());
    final ProgressDialog dialog = new ProgressDialog(getContext());
    dialog.setMessage("Por favor espere...");
    dialog.show();

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.PUT, url, jsonObject,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    if (dialog.isShowing()) dialog.dismiss();
                    Toast.makeText(context, "Se actualizó la tarea", Toast.LENGTH_SHORT).show();
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    if (dialog.isShowing()) dialog.dismiss();
                    System.out.println(error.getMessage());
                    Toast.makeText(context, "No se actualizó la tarea", Toast.LENGTH_SHORT).show();
                }
            });
    queue.add(request);
}

А это код из WebService:

@Override
public void update(Tarea entity) throws SQLException {
    String query = "UPDATE Tareas SET nombre_tarea = ?, nota = ?, id_estudiante = ?, id_asignatura = ? WHERE id_tarea = ?";

    if (update == null) {
        update = MysqlConnection.getInstance().getConnection().prepareStatement(query);
    }

    update.setString(1, entity.getNombre_tarea());
    update.setDouble(2, entity.getNota());
    update.setInt(3, entity.getId_estudiante());
    update.setInt(4, entity.getId_asignatura());
    update.setInt(5, entity.getId_tarea());

    Integer idStudent = entity.getId_estudiante();
    Integer idSubject = entity.getId_asignatura();

    if (!isStudent(idStudent)) {
        System.out.println("El ID de usuario ingresado no es de un estudiante, verifique e intente de nuevo");
    } else if (!verifyUserExists(idStudent)) {
        System.out.println("No existe estudiante con el ID ingresado");
    } else if (!verifySubjectExists(idSubject)) {
        System.out.println("No existe asignatura con el ID ingresado");
    } else {
        update.executeUpdate();
        System.out.println("Tarea actualizada exitosamente");
    }
}

....

@PUT
@Path("{id}")
public void put(@PathParam("id") Integer id, Tarea tarea) {
    tarea.setId_tarea(id);

    try {
        DaoTarea.getInstance().update(tarea);
    } catch (SQLException ex) {
        Logger.getLogger(TareaResource.class.getName()).log(Level.SEVERE, null, ex);
    }
}
...