当前位置: 首页 > 知识库问答 >
问题:

informacioncom.android.volley.解析错误:org.json.JSONException:输入结束在字符0的

秦永望
2023-03-14

我在尝试使用PUT方法时遇到了一个问题,我正在使用PUT方法通过web服务更新我的表记录,问题是在尝试更新数据时,我遇到了以下错误:

informacioncom.android.volley.解析错误:org.json.JSONException:输入结束在字符0的

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

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

@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个答案

邓德惠
2023-03-14

在将数据添加到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;
 类似资料:
  • 我正在编写一个Android应用程序,可以解析从PHP网页返回的JSON,并且在Logcat中不断得到“org.JSON.jsonException:在字符0处结束输入”。代码如下: 感谢任何帮助:)

  • 问题内容: 解析JSON时出现错误。解析数据org.json.JSONException时出错:输入的第0个字符。 错误日志: 这是在UserFunction类中调用函数的代码: UserFunction类中的函数 Java解析器类: 这是我的index.php API index.php调用此orderdetails函数 新的JSON响应。尽管我必须要生产的产品不能显示阵列。为什么JSON标签显

  • 问题内容: 我正在开发一个测试Android应用程序,该应用程序必须显示mysql数据库中的一些数据。这是我的日志: 这里是JSONParser.java类 在这里,我用来显示所选数据的类: 这里的PHP文件: 另外,这里主要活动: 我在互联网上阅读了有关此错误的各种线索,但它甚至是由差异问题引起的,我没有找到与我的情况类似的情况或解决了我问题的解决方案。 问题答案: 看起来您的PHP文件正在返回

  • 问题内容: 我正在尝试从服务器获取JSON值。我不知道我的代码有什么问题。我正在使用,这是我的代码在 码: 这是logcat 这是 JSON 格式 问题答案: 您可能会得到一个空白的答复。它不为null,但 jsontext 为空。因此,您将收到此错误,而不是Nullpointer异常 您是否正在向服务器发送正确的参数。还要检查url是否响应POST请求。

  • 问题内容: 我已经看到其他人遇到了这个问题,但是没有一个帖子能够帮助我。我正在尝试将Volley用于我的REST调用库,当我尝试将JSON对象作为参数使用Put调用时,我得到了。 这是代码: jsonParams日志显示: 我还有其他设置吗?看来请求无法解析JSON对象。我什至尝试创建一个HashMap,然后使用它创建一个JSON对象,但是我仍然得到相同的结果。 问题答案: 我也遇到了这个问题。

  • 以下是所有的错误: 下面是我的代码: