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.
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.
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.
Presionamos Start y comenzara a correr nuestro servicio XAMPP.
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.
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
Nos mostrara la siguiente pantalla y buscaremos a la izquierda el boton "+" lo presionamos.
Seleccionamos Import JAR y le damos siguiente.
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.
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.
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í
LOS LINK SE CAYERON
ResponderEliminarAquí te dejo todo el contenido amigo.
Eliminarhttps://mega.nz/#F!d5JxwKCQ!FMdxW4G5z5vHltE_2aqbnw
Saludos!
El enlace no existe.
ResponderEliminarAqui te dejo todo el contenido amigo.
Eliminarhttps://mega.nz/#F!d5JxwKCQ!FMdxW4G5z5vHltE_2aqbnw
Saludos!
Como se llama la clase que hay que descargar? en los links que dejaste no la encuentro, te lo agradecería.
ResponderEliminarHola mil disculpas subire de nuevo los archivos.
EliminarHola buen día.
ResponderEliminarEstoy 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.
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"
Eliminarhola que tal muy buen día...
ResponderEliminarTengo 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.
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