Conexion a servidor desde android

19

description

Esta presentación muestra como es la conexión a un servidor web desde una aplicación Android

Transcript of Conexion a servidor desde android

Page 1: Conexion a servidor desde android
Page 2: Conexion a servidor desde android

?

Page 3: Conexion a servidor desde android

¿Qué necesitamos?

Aplicación Android

Aplicación Web

Base de datos

Page 4: Conexion a servidor desde android

Manos a la obra!

Page 5: Conexion a servidor desde android

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

Page 6: Conexion a servidor desde android

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

Page 7: Conexion a servidor desde android

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" }] }

Page 8: Conexion a servidor desde android

Transmisión de datos

Page 9: Conexion a servidor desde android

¿Qué hay en el servidor?

• URL: http://pruebaandroid.comyr.com/insertar.php

Page 10: Conexion a servidor desde android

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);

Page 11: Conexion a servidor desde android

¿Qué hay en Android?

Page 12: Conexion a servidor desde android

Desarrollo de App

Permiso Internet

Crear tarea asíncrona

Inicializar conexión

Agregar parámetros Post Get

Convertir a string

Decodificar JSON

Page 13: Conexion a servidor desde android

Archivo manifiesto

• Agregar permiso de conexión a internet

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

Page 14: Conexion a servidor desde android

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) { }}

Page 15: Conexion a servidor desde android

Comunicación con servidor

• Inicializar

HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost("http://pruebaandroid.comyr.com/insertar.php");

Page 16: Conexion a servidor desde android

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));

Page 17: Conexion a servidor desde android

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);

Page 18: Conexion a servidor desde android

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();

Page 19: Conexion a servidor desde android

Código fuente disponible en: