12.android servicios web
Transcript of 12.android servicios web
AndroidServicios WEB
Guido Ticona [email protected]
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
Arquitectura
Smartphone
DBMS
Servidor
HTTPSOAPREST 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
Remote Procedure Calls (RPC, Llamadas a Procedimientos Remotos)
REST SOAP
Tipos de Servicios
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
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
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)
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)
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)
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)
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)
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
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
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…)