conexion a servidor desde android

Post on 24-Apr-2015

8.075 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

?

¿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:

top related