informacioncom.android.volley.ParseError:org.json.JSONException:字符0处的输入结束

时间:2018-05-03 22:00:35

标签: android web-services android-volley

我在尝试使用PUT方法时遇到问题,我使用PUT方法通过Web服务更新我的表记录,问题是当尝试更新数据时出现以下错误:

  

informacioncom.android.volley.ParseError:org.json.JSONException:End   

字符0的输入

如果我检查了数据库中的表,它不会输入空值,它会记录空格。

这是我用来更新我的数据的方法:

@Override
    public void onClickUpdate(final int position, final String identificador) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = this.getLayoutInflater();
        View MyView = inflater.inflate(R.layout.dialog_signin_updatedonante, null);

        final EditText identidad = (EditText)MyView.findViewById(R.id.identificador_tarea);
        final EditText nombre_tarea = (EditText)MyView.findViewById(R.id.nombre_tarea);
        final EditText nota = (EditText)MyView.findViewById(R.id.nota_tarea);
        final EditText estudiante = (EditText)MyView.findViewById(R.id.estudiante_tarea);
        identidad.setEnabled(false);
        identidad.setText(identificador);

        String ntarea = nombre_tarea.getText().toString();
        String not = nota.getText().toString();
        String estudi = estudiante.getText().toString();

        final JSONObject jsonObject = new JSONObject();
        try{
            jsonObject.put("nombreUsuario", ntarea)
                    .put("nota", not)
                    .put("estudiante", estudi);
        }catch(JSONException e){
            e.printStackTrace();
        }

        final RequestQueue queue = Volley.newRequestQueue(getActivity());

        builder.setView(MyView)
                .setPositiveButton("Registrar", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                        if(nombre_tarea.getText().toString().equals("") || nota.getText().toString().equals("") || estudiante.getText().toString().equals("")){
                            Toast.makeText(getActivity(), "Porfavor llena todos los campos", Toast.LENGTH_LONG ).show();
                        }else{
                            String urlPut = "http://192.168.1.81:8080/WebServiceExamenFinal/webapi/tareas/";

                            JsonObjectRequest request = new JsonObjectRequest(Request.Method.PUT, urlPut + identificador, jsonObject,
                                    new Response.Listener<JSONObject>() {
                                        @Override
                                        public void onResponse(JSONObject response) {

                                            Toast.makeText(getActivity(), "Se envió correctamente", Toast.LENGTH_LONG).show();
                                        }
                                    }, new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                    Toast.makeText(getActivity(), "Ocurrió un error al enviar la información"+error, Toast.LENGTH_LONG).show();
                                }
                            });
                            queue.add(request);
                        }
                    }
                })
                .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        Toast.makeText(getActivity(),"No se actualizo ningun registro", Toast.LENGTH_SHORT).show();
                        alertDialog.dismiss();
                    }
                });
        alertDialog = builder.create();
        alertDialog.show();

    }

1 个答案:

答案 0 :(得分:0)

在向其添加数据之前,看起来您的jsonObject变量已声明为final。最好的解决方案是将代码分成单独的函数,但现在你可以尝试类似的东西:

JSONObject tempJson = new JSONObject();
try{
tempJson.put("nombreUsuario", ntarea)
            .put("nota", not)
            .put("estudiante", estudi);
} catch(JSONException e){
    e.printStackTrace();
}
final JSONObject jsonObject = tempJson;