Post on 24-Apr-2015
description
?
¿Qué necesitamos?
Aplicación Android
Aplicación Web
Base de datos
Manos a la obra!
Flujo general
Usuario ingresa registro
Iniciar conexión a
servidor
Enviar registro
Recibir registro
Almacenar en base de
datos
Enviar registros
almacenados
Recibir y mostrar registros
JSON
• JavaScript Object Notation• Define un formato para el almacenamiento e
intercambio de información• Alternativa a XML en AJAX• Utilizado por Google, Yahoo, Facebook, Twitter• Información técnica:– JSON Object– JSON Array
JSON
• Ejemplo de JSON Array
• Ejemplo de JSON Object
• Ejemplo de JSON Array con JSON Object
["Elemento 1","Elemento 2"]
{ "Campo 1":"Valor 1" , "Campo 2":"Valor 2" }
{ "empleados": [{ "nombre":"Juan" , "apellido":"Perez" }, { "nombre":"Ana" , "apellido":"Gomez" }, { "nombre":"Pedro" , "apellido":"Hernandez" }] }
Transmisión de datos
¿Qué hay en el servidor?
• URL: http://pruebaandroid.comyr.com/insertar.php
PHP
• Recepción de datos
• Envío de datos
$nombre = $_POST['nombre'];$apellido = $_POST['apellido'];insertarPersona($nombre, $apellido);
$arrPersonas = array();llenarArreglo();echo json_encode($arrPersonas);
¿Qué hay en Android?
Desarrollo de App
Permiso Internet
Crear tarea asíncrona
Inicializar conexión
Agregar parámetros Post Get
Convertir a string
Decodificar JSON
Archivo manifiesto
• Agregar permiso de conexión a internet
<uses-permission android:name="android.permission.INTERNET"/>
Tareas asíncronas en Android
• AsyncTaskspublic class Tarea extends AsyncTask<Params, Progress, Result>{ protected Result doInBackground(Params... p) { }
protected void onPreExecute() { }
protected void onProgressUpdate (Progress... values) { }
protected void onPostExecute (Result result) { }}
Comunicación con servidor
• Inicializar
HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost("http://pruebaandroid.comyr.com/insertar.php");
Comunicación con servidor
• Agregar parámetros para el Post
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);nameValuePairs.add(new BasicNameValuePair("nombre", nombre));nameValuePairs.add(new BasicNameValuePair("apellido", apellido));httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
Comunicación con servidor
• Ejecutar la petición POST:
• Obtener la respuesta del servidor:
• Transformar el InputStream a String, utilizando la función convertStreamToString() tomada de:– senior.ceng.metu.edu.tr
HttpResponse response = httpclient.execute(httppost);
InputStream is=response.getEntity().getContent();
String datos = convertStreamToString(is);
Decodificar datos JSON• Crear un arreglo JSON vacío
• Crear un arreglo JSON a partir de un String
• Obtener dato del arreglo JSON
JSONArray jsonArreglo = new JSONArray();
try {jsonArreglo = new JSONArray(strMisDatos);} catch (JSONException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}
jsonArreglo.get(i).toString();
Código fuente disponible en: