12.android servicios web

15
Android Servicios WEB Guido Ticona Hurtado [email protected]

Transcript of 12.android servicios web

Page 1: 12.android   servicios web

AndroidServicios WEB

Guido Ticona [email protected]

Page 2: 12.android   servicios web

Sistemas software diseñados para soportar una interacción interoperable maquina a maquina sobre una red

APIs Web que pueden ser accedidas dentro de una red (principalmente Internet) y son ejecutados en el sistema que los aloja

Intercambiar datos entre aplicaciones que no necesariamente estan en el mismo lenguaje, sistema operativo o geografia

Servicios WEB

Page 3: 12.android   servicios web

Arquitectura

Smartphone

DBMS

Servidor

HTTPSOAPREST WEB

Page 4: 12.android   servicios web

Arquitectura Ejemplo

Servicio Web XML meteorológico

Servicio Web XMLtipo de cambio

Base de datos deprecios de pasajes

Servicio Web XMLprecio del pasaje

Seleccionar destino:

La previsiónmeteorológica es:

El tipo de cambio es:

El pasaje de avión sólo cuesta:

Lluvia

China

$1.56

$1,999.98

Sitio de viajesAquiNoMeQuedo.com

Internet

Page 5: 12.android   servicios web

Remote Procedure Calls (RPC, Llamadas a Procedimientos Remotos)

REST SOAP

Tipos de Servicios

Page 6: 12.android   servicios web

Es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web

Se usa en el sentido más amplio para describir cualquier interfaz web simple que utiliza XML y HTTP, sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes como el protocolo de servicios web SOAP

Representational State Transfer

Page 7: 12.android   servicios web

Trabajan con HTTP e implementan operaciones basicas GET POST

Se centra más en interactuar con recursos con estado, que con mensajes y operaciones

REST

Page 8: 12.android   servicios web

HttpClient httpClient = new DefaultHttpClient(); HttpGet get =new HttpGet(URI); get.setHeader("content-type", "application/json"); HttpResponse resp = httpClient.execute(get); String respStr = EntityUtils.toString(resp.getEntity()); JSONArray respJSON = new JSONArray(respStr); for(int i=0; i<respJSON.length(); i++) JSONObject obj = respJSON.getJSONObject(i); int id = obj.getInt("id"); String nombre= obj.getString("nombre");

REST listado (ejemplo)

Page 9: 12.android   servicios web

HttpClient httpClient = new DefaultHttpClient(); HttpGet get =new HttpGet(URI); get.setHeader("content-type", "application/json"); HttpResponse resp = httpClient.execute(get); String respStr = EntityUtils.toString(resp.getEntity()); JSONObject respJSON = new JSONObject(respStr); int idd = respJSON.getInt("id"); String nombre = respJSON.getString("nombre"); String apellido = respJSON.getString("apellido");

REST obtener por id (ejemplo)

Page 10: 12.android   servicios web

HttpClient httpClient = new DefaultHttpClient(); HttpDelete del = new HttpDelete(“URI); del.setHeader("content-type", "application/json"); HttpResponse resp = httpClient.execute(del); String respStr = EntityUtils.toString(resp.getEntity());

REST eliminar (ejemplo)

Page 11: 12.android   servicios web

HttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost(URI); post.setHeader("content-type", "application/json"); JSONObject dato = new JSONObject(); dato.put("nombre",””); StringEntity entity = new StringEntity(dato.toString()); post.setEntity(entity); HttpResponse resp = httpClient.execute(post); String respStr = EntityUtils.toString(resp.getEntity()); JSONObject respJSON = new JSONObject(respStr);

REST agregar (ejemplo)

Page 12: 12.android   servicios web

HttpClient httpClient = new DefaultHttpClient(); HttpPut put = new HttpPut(URI); put.setHeader("content-type", "application/json"); JSONObject dato = new JSONObject(); dato.put("id", txtId.getText().toString()); dato.put("nombre", txtNombre.getText().toString()); StringEntity entity = new StringEntity(dato.toString()); put.setEntity(entity); HttpResponse resp = httpClient.execute(put); String respStr = EntityUtils.toString(resp.getEntity());

REST modificar (ejemplo)

Page 13: 12.android   servicios web

Arquitectura Orientada a Servicios Esto es típicamente referenciado como servicios orientados

a mensajes Los Servicios Web pueden también ser implementados

siguiendo los conceptos de la arquitectura SOA, donde la unidad básica de comunicación es el mensaje, más que la operación

Es débilmente acoplado

Page 14: 12.android   servicios web

SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME); SoapSerializationEnvelope envelope = new

SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE transporte = new HttpTransportSE(URL); transporte.call(SOAP_ACTION, envelope); SoapObject resSoap =(SoapObject)envelope.getResponse(); for (int i = 0; i < resSoap.getPropertyCount(); i++) SoapObject ic = (SoapObject)resSoap.getProperty(i); cli.id = Integer.parseInt(ic.getProperty(0).toString()); cli.nombre = ic.getProperty(1).toString();

Ejemplo SOAP listado

Page 15: 12.android   servicios web

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("nombre","nombre"); SoapSerializationEnvelope envelope = new

SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet = true; envelope.setOutputSoapObject(request); HttpTransportSE transporte = new HttpTransportSE(URL); transporte.call(SOAP_ACTION, envelope); SoapPrimitive resuSOAP =(SoapPrimitive)envelope.getResponse();

Ejemplo SOAP add (cont…)