我在尝试使用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();
}
答案 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;