Blog para desarrollo de aplicaciones en Android, aprende paso a paso como crear aplicaciones.

Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación para mostrarle publicidad personalizada y realizar análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. OK Más información | Y más

Como crear un WebService para Android utilizando PHP y Mysqli - Parte 1

Android WebService Mysql PHP Example


Hola amigos continuamos aprendiendo nuevamente cada día mas! Y en esta ocasión les presentare un ejemplo de un WebService utilizando Android repasa con atención este contenido para que entiendan.

Bueno comenzaremos con este tutorial para comenzar a consumir un servicio web REST.Bueno amigos comenzaremos creando nuestro proyecto de Android. (Crear Proyecto)

Teniendo listo esto vamos a seguir con nuestro tutorial y para ello necesitaremos los siguientes pasos a realizar.

Vamos a tener que instalar el Sublime Text. (Aquí) y tener Mysql (Aquí) instalado en nuestra computadora y junto a Mysql WorkBench (Aquí). Primeramente solo haremos la conexión para luego consumir una base de datos.

Para manejar nuestro servicio web utilizaremos XAMPP (Aqui).

Para poder realizar este ejemplo les dejare unas librerías que deberán agregar al proyecto para poder realizar la conexión a nuestro WebService desde Android Studio.

Descarga : Aquí

Comenzaremos creando el archivo de conexión. Utilizaremos el Sublime Text para crear nuestro archivo.

Abriremos el sublime text.

Android Studio - WebService Conexion Base de Datos Msqli con PHP

Y escribiremos el siguiente código.


<?php
//--Datos del servidor mysql
//--En este caso estoy utilzando los datos de mi Mysql ustedes pueden utilizar los suyos
//--Contraseña de su servidor y la base de datos que desean utilizar para la conexión
$conn = new mysqli("localhost", "root", "sergio123", "sakila");
//--Arreglo
$json = array();
echo "[";
// Verificar conexión
if ($conn->connect_error) {
   //--Cuando la conexion es fallida!
   $json['conexion'][] = "Conexion Fallida!";
} else{
   //--Cuando la conexión es exitosa!
   $json['conexion'][] = "Conexion Exitosa!";
}
//--Imprime el mensaje resultante.
echo json_encode($json);
echo "]";
//--Cierra conexion
$conn->close();
?>

Teniendo listo nuestro archivo podemos presionar Ctrl + S para guardar el archivo.

Android Studio - WebService Conexion Base de Datos Msqli con PHP
Buscamos la ruta del xampp. La carpeta del xampp se encuentra en la unidad "C:/xampp" y nos dirigimos a ella y abriremos la carpeta "htdocs" y en ella guardaremos nuestro archivo. Al cual le pondremos Prueba.php o el nombre que ustedes deseen.

Teniendo listo esto podemos proceder a ejecutar nustro servicio en el XAMPP lo abrimos y nos aparecerá lo siguiente.

Android Studio - WebService Conexion Base de Datos Msqli con PHP
Presionamos Start y comenzara a correr nuestro servicio XAMPP.
Android Studio - WebService Conexion Base de Datos Msqli con PHP
La palabra apache se pondra verde. Cualquier problema que lleguen a tener con el servicio pueden escribirme y con gusto les ayudare a solucionar cualquier problema con el Xampp.

Continuamos y abrimos cualquier navegador. Y escribimos la siguiente ruta en la barra de direcciones. Para este paso debemos tener corriendo nuestro servicio XAMPP.

http://localhost/PruebasConexion/Prueba.php

Esta es la ruta de mi archivo la de ustedes puede variar dependiendo de donde lo hayan almacenado.

Nos debe devolver esta respuesta.
Android Studio - WebService Conexion Base de Datos Msqli con PHP

Conexión exitosa! Si la respuesta es diferente deberemos revisar bien nuestro código.

Teniendo listo esto podemos proceder a nuestro Android Studio.

Ya habiendo creado nuestro proyecto. Comenzaremos a desarrollar nuestra aplicación. Antes que todo debemos descargar las librerías que deje en la descripción al inicio del curso. Para que las añadan a su proyecto de la siguiente forma.

Nos dirigimos a File -> Project Structure
Android Studio - WebService Conexion Base de Datos Msqli con PHP
Nos mostrara la siguiente pantalla y buscaremos a la izquierda el boton "+" lo presionamos.
Android Studio - WebService Conexion Base de Datos Msqli con PHP
Seleccionamos Import JAR y le damos siguiente.
Android Studio - WebService Conexion Base de Datos Msqli con PHP
Y agregamos las librerías a nuestro proyecto de una en una. En dado caso que tenga problemas y no logren agregar las librerías les dejo la segunda opción que es agregar las dependencias a nuestra aplicación.

compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
compile 'org.apache.httpcomponents:httpmime:4.3'

Para ello nos dirigimos a Gradle Scripts de nuestro proyecto que se encuentra en la parte izquierda.
Buscamos el archivo build.gradle ( Module: app ) y lo abrimos colocando las dependencias en la seccion que dice "dependencies" como en la imagen a continuación.

Android Studio - WebService Conexion Base de Datos Msqli con PHP
Y esto tendría que solucionar nuestros problemas con las librerías de conexión. Cualquier problema pueden escribirme y con gusto les echare una mano.

Ahora comenzaremos con el código abriendo nuestra java MainActivity.

//--Variable que almacenara el resultado obtenido del HttpPost
    private String jsonResult;
    //--Control Textview
    TextView resultado;
    //--Valor que almacena el mensaje respuesta
    String res;
    //--Ruta para hacer el POST de nuestro archivo PHP
    private static final  String url = "http://192.168.10.21/PruebasConexion/Prueba.php";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //--Asigna propiedades del control
        resultado = (TextView) findViewById(R.id.textView);
        //--Ejecuta la clase AsyncTask
        JsonReadTask task = new JsonReadTask();
        task.execute(new String[]{url});
    }
    //--Clase AsyncTask para hacer el HttpPost
    private class JsonReadTask extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {

            //--Variable que ejecuta la funcion HttpClient que asigna la URL en params
            HttpClient httpclient = new DefaultHttpClient();
            //--Variable que ejecuta la función HttpPost que asigna la URL en params
            HttpPost httppost = new HttpPost(params[0]);
            try {
                //--Ejecutamos nuestra petición POST al servidor con nuestra URL
                HttpResponse response = httpclient.execute(httppost);
                //--Obtiene el resultado de nuestra petición al serivdor
                jsonResult = inputStreamToString(
                        response.getEntity().getContent()).toString();
            }

            catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        private StringBuilder inputStreamToString(InputStream is) {
            String rLine = "";
            StringBuilder answer = new StringBuilder();
            BufferedReader rd = null;
            try {
                rd = new BufferedReader(new InputStreamReader(is,"UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

            try {
                while ((rLine = rd.readLine()) != null) {
                    answer.append(rLine);
                }
            }

            catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(getApplicationContext(),
                        "Error..." + e.toString(), Toast.LENGTH_LONG).show();
            }
            return answer;
        }

        @Override
        protected void onPostExecute(String result) {
            //--Funcion de resultado
            SetResultado();
        }
    }
    //--Mostrara el resultado
    public void SetResultado() {
        try {
            //--Variable JSON que almacena los resultados devueltos por el webservice
            JSONArray respJSON = new JSONArray(jsonResult);
            //--Ciclo que recorre la variable para mostrar el resultado
            for(int i=0; i<respJSON.length(); i++)
            {
                //--Variable que almacena el resultado de los nodos
                JSONObject obj = respJSON.getJSONObject(i);
                //--Asigna el resultado contenido en el parametro añadido "conecion"
                res = obj.getString("conexion");
            }
        } catch (JSONException e) {
            Toast.makeText(getApplicationContext(), "Error" + e.toString(),
                    Toast.LENGTH_SHORT).show();
        }
        //--Asigna el resultado en el control TextView
        resultado.setText(res);
    }

Ahora añadiremos a nuestro AndroidManifest el siguiente permiso.

<uses-permission android:name="android.permission.INTERNET" />

Con todo esto listo podremos ejecutar nuestra aplicación y obtendremos el siguiente resultado.
Android Studio - WebService Conexion Base de Datos Msqli con PHP
Y esto seria todo.

Cualquier duda que tengan por favor escríbanme y con gusto les echare una mano. Sugerencias o criticas déjenlas en los comentarios. Gracias por tu tiempo.

Descargar : Aquí





10 comentarios:

  1. Respuestas
    1. Aquí te dejo todo el contenido amigo.
      https://mega.nz/#F!d5JxwKCQ!FMdxW4G5z5vHltE_2aqbnw
      Saludos!

      Eliminar
  2. Respuestas
    1. Aqui te dejo todo el contenido amigo.
      https://mega.nz/#F!d5JxwKCQ!FMdxW4G5z5vHltE_2aqbnw
      Saludos!

      Eliminar
  3. Como se llama la clase que hay que descargar? en los links que dejaste no la encuentro, te lo agradecería.

    ResponderEliminar
  4. Hola buen día.
    Estoy probando tu codigo para entender como funciona, pero cuando declaro las dependencias si dejo las dos implementadas, me dice al tratar de ejecutar que hay duplicados.
    Si solo dejo la de 'org.jbundle.util.......' se compila e instala en mi dispositivo fisico pero de inmediato me dice que la aplicacion se detuvo.
    Que me sugieres.

    Agradezco de antemano.

    ResponderEliminar
    Respuestas
    1. Te dice duplicado puedes enviarme un correo para ver el problema que te muestra, intenta utilizar la nueva actualización "implemment" en lugar de "compile"

      Eliminar
  5. hola que tal muy buen día...
    Tengo una pregunta quisiera alojar mi Aplicacion android en hosting para que funcione el registro via php y el inicio de sesion con la misma función no tienes un tutorial de ese tipo? te lo agradeceria mucho.

    ResponderEliminar
    Respuestas
    1. Hola estimado! La aplicación la subes a la playstore y lo que ocupas es el servicio en un hosting para hacer consultar con un servidor php a mysql? podemos ayudarte claro solo danos tiempo vamos a retomar de nuevo nuestra pagina y la actualizaremos con gusto te orientamos gracias por escribir!

      Eliminar

x

Registrate!

Curso Android Español

Curso Kotlin Español

eBook Free Android Studio

Noticias y Eventos

¡Directamente a tu INBOX!

Le enviaremos nuestros recursos gratis. Para obtener nuestro contenido nuevo, únase a nuestra comunidad. No te molestaremos enviando información inútil. ¡No te pierdas ninguna actualización, mantente conectado! Recuerda verificar tu correo electronico.

Ingrese su dirección de correo electrónico:

Entregado por FeedBurner