Error in Registration Android String can not be converted to JSONObject

0

I have a record in Android but when I hit the "Register Incidence" button, it generates the following error in the logcat:

This is my RegisterIncidences:

        btnRegistrar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String comprobante = etComprobante.getText().toString();
            final String tipo = etTipoProd.getText().toString();
            final String marca = etMarcaProd.getText().toString();
            final String modelo = etModeloProd.getText().toString();
            final int cantidad = Integer.parseInt(etCantidad.getText().toString());
            final int monto = Integer.parseInt(etMonto.getText().toString());
            final String tipo_incidencia = spTipoIncidencia.getSelectedItem().toString();

            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try{
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        if(success){
                            Intent intent = new Intent(RegistrarIncidencia.this,MenuPrincipal.class);
                            RegistrarIncidencia.this.startActivity(intent);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(RegistrarIncidencia.this);
                            builder.setMessage("Registro Fallido").setNegativeButton("Intentar",null).create().show();
                        }
                    }catch (JSONException e){
                        e.printStackTrace();
                    }
                }
            };
            RegisterRequest registerRequest = new RegisterRequest(comprobante,tipo,marca,modelo,cantidad,monto,tipo_incidencia,responseListener);
            RequestQueue queue = Volley.newRequestQueue(RegistrarIncidencia.this);
            queue.add(registerRequest);
        }
    });
}

According to the logcat the errors are in:

Response.Listener<String> responseListener = new Response.Listener<String>() 

JSONObject jsonResponse = new JSONObject(response);

This is my .php file

<?php
$con = mysqli_connect("localhost","id7687347_lalycorp","lalycorp","id7687347_lalycorp");

$comprobante = $_POST["comprobante"];
$tipo = $_POST["tipo"];
$marca = $_POST["marca"];
$modelo = $_POST["modelo"];
$cantidad = $_POST["cantidad"];
$monto = $_POST["monto"];
$incidencia_tipo = $_POST["tipo_incidencia"];

$statement = mysqli_prepare($con, "INSERT INTO laly_incidencias (incidencias_comprobante, incidencias_tipoprod, incidencias_marcaprod, incidencias_modeloprod, incidencias_cantidad, incidencias_monto, incidencias_tipo) VALUES (?, ?, ?, ?, ?, ?, ?)");
mysqli_stmt_bind_param($statement, "isssiis", $comprobante, $tipo, $marca, $modelo, $cantidad,$monto,$incidencias_tipo);
mysqli_stmt_execute($statement);

$response = array();
$response["success"] = true;  

echo json_encode($response);

 ?>

Annex my RegisterRequest:

public class RegisterRequest extends StringRequest {
private static final String REGISTER_REQUEST_URL = "https://lalycorp.000webhostapp.com/RegIncidencia.php";
private Map<String,String> params;

public RegisterRequest(String comprobante, String tipo, String marca, String modelo, int cantidad, int monto, String tipo_incidencia, Response.Listener<String> listener) {
    super(Method.POST,REGISTER_REQUEST_URL,listener,null);
    params = new HashMap<>();
    params.put("comprobante",comprobante);
    params.put("tipo",tipo);
    params.put("marca",marca);
    params.put("modelo",modelo);
    params.put("cantidad",cantidad+"");
    params.put("monto",monto+"");
    params.put("tipo_incidencia",tipo_incidencia);
}
@Override
public Map<String, String> getParams() {
    return params;
}
}

Logcat is shown without errors but when I go to the database there are no records:

    
asked by Stalinn 22.11.2018 в 19:01
source

1 answer

-1

The problem is that the answer is not really a .json, for that reason when trying to create a json object an error is generated:

  JSONObject jsonResponse = new JSONObject(response);

You must ensure that your request generates the appropriate .json.

You are receiving an html, for errors in the url when not sending the necessary parameters. This is what you get and what is wrong:

<br />
<b>Notice</b>:  Undefined index: comprobante in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>4</b><br />
<br />
<b>Notice</b>:  Undefined index: tipo in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>5</b><br />
<br />
<b>Notice</b>:  Undefined index: marca in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>6</b><br />
<br />
<b>Notice</b>:  Undefined index: modelo in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>7</b><br />
<br />
<b>Notice</b>:  Undefined index: cantidad in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>8</b><br />
<br />
<b>Notice</b>:  Undefined index: monto in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>9</b><br />
<br />
<b>Notice</b>:  Undefined index: tipo_incidencia in <b>/storage/ssd2/347/7687347/public_html/RegIncidencia.php</b> on line <b>10</b><br />
{"success":true}

Ensure that the parameters sent are correct:

public RegisterRequest(String comprobante, String tipo, String marca, String modelo, int cantidad, int monto, String tipo_incidencia, Response.Listener<String> listener) {
    super(Method.POST,REGISTER_REQUEST_URL,listener,null);
    params = new HashMap<>();
    params.put("comprobante",comprobante);
    params.put("tipo",tipo);
    params.put("marca",marca);
    params.put("modelo",modelo);
    params.put("cantidad",cantidad+"");
    params.put("monto",monto+"");
    params.put("tipo_incidencia",tipo_incidencia);
}
    
answered by 22.11.2018 в 20:09