viernes, 17 de julio de 2015

JSON en Android con PHP y MySQL

Para iniciarse con esto, una buena recomendación que les puedo dar es esta librería y empecemos.
Primero descargamos la librería , es un .jar:
Ahora en el paquete llamado app de nuestro árbol de archivos del proyecto:

Hacemos click derecho  y de ahí:
new->Module
y nos debe de lanzar a la siguiente ventana:
Y elegimos importar  .jar
Ahora nos lanzara a una ventana donde elegiremos la ruta de nuestro archivo .jar que descargamos de la pagina.
Ahora nos vamos a build.gradle (Module:app) y agregamos lo siguiente en dependencies:
compile 'com.loopj.android:android-async-http:1.4.7'
Y ahora veamos la pagina con la que vamos a interactuar en el servidor:
La tabla de la base de datos que consultaremos es:
Todo la comunicación la usaremos desde un método que llamaremos  ObtDatos(), lo que se va hacer es obtener los datos de apellido, edad  y puntos y los mostraremos en un listView,

public void ObtDatos()
    {
        AsyncHttpClient client=new AsyncHttpClient();
        String url="http://192.168.61.13/loggeo.php";
        RequestParams parametros= new RequestParams();
        EditText nombre=(EditText)findViewById(R.id.NombreLgoTxt);
        parametros.put("Nombre",nombre.getText().toString());

        client.post(url, parametros, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                if (statusCode == 200) {
                    //Llamar a la funcion
                    CargarLista(obtDatosJSON(new String(responseBody)));
                    Log.i("Respuesta:", new String(responseBody));
                    Log.i("Datos:", "No Fallo");
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                Log.i("Datos:", "Maldad: Fallo");
            }
        });
    }


CargarLista(obtDatosJSON(new String(responseBody))); nos va a llevar a cargar los datos obtenidos de la consulta del servidor en un listView:

public void CargarLista(ArrayList datos)
    {
        ListView listView=(ListView)findViewById(R.id.listViewLoggeo);
        ArrayAdapter adapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,datos);
        listView.setAdapter(adapter);

    }

    public ArrayList obtDatosJSON(String resupesta)
    {
        ArrayList listado=new ArrayList<>();
        try
        {
            JSONObject jsonObject= new JSONObject(resupesta);
            String texto="Nombre="+jsonObject.getString("Nombre");
            listado.add(texto);

            texto="Apellido="+jsonObject.getString("Apellido");
            listado.add(texto);

            texto="Edad="+jsonObject.getString("Edad");
            listado.add(texto);

            texto="Puntos="+jsonObject.getString("Puntos");
            listado.add(texto);

        }catch (Exception error)
        {

        }
        return listado;
    }

Hacemos una interfaz parecida a esta:
Liga xml
Al correr la aplicación tendremos:

Espero les haya servido este  tutorial, por su atención gracias!

Fuentes:
https://www.youtube.com/watch?v=oLm_5GKHJCI  consultada el 16 de julio del 2015.

No hay comentarios:

Publicar un comentario