Práctica 7: Invocación Web Services con REST



Documentos relacionados
Práctica 2: Java Remote Method Invocation (RMI)

Práctica 5: Common Object Request Broker Architecture CORBA

1. Creación del repositorio

Programación Android. Rafael Morón Abad

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

1. Visión general de RMI

Práctica 4: Java Remote Method Invocation (RMI)

Modelo de Objetos Distribuidos

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Procesamiento de documentos XML

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Especificación WebService para:

Lab 01: Programación de Sockets en TCP

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

Curso de programación en Android. 19/Junio/2012 Ramón Alcarria

Manual del Protocolo XML-RPC de Mensajería Negocios

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

RMI [Remote Method Invocation]

Un poco de culturilla...1 Crear un servicio Web...1 Usar servicios web...6

envía al browser. El browser despliega el archivo.

Modulo conexión Cliente WS DGI

Plataforma de Contratación del Sector Público

MANEJO DE FICHEROS XML Versión 1.0

Guías para la práctica (2): Acceso a Salesforce

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Sesión 17. Servicios web RESTful

Introducción al lenguaje Java

Documentación Técnica Conector

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa

CFDi Client Manual de Usuario

en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

Elastix Web Services (WSDL) Manual de Usuario

Cómo crear un cliente SOAP en Java sin usar AXIS paso a paso

NIVEL 16: ESTRUCTURAS RECURSIVAS N-ARIAS XML

Servicios Web. Andrés Pastorini. TRIA Tecnólogo Informático

Modulo 1 El lenguaje Java

Desarrollo de Servicios Web con JBuilder

Manual de referencia para la invocación de WebServices con Aduanas (SMS v3.0)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat

Para poder instalar el producto, tendremos que obtener el instalador apropiado para nuestro entorno hardware y software.

Programación Orientada a Objetos. Tema 7: Persistencia

UNIVERSIDAD POLITÉCNICA DE PACHUCA SOCKETS EN JAVA

O C T U B R E SOPORTE CLIENTE. Manual de Usuario Versión 1. VERSIÓN 1 P á g i n a 1

Tutorial Servicios Web

El lenguaje de programación Java

Manual de referencia de sistema para la invocación de Web Services con Aduanas (SMS v3.1.12)

Introducción Entorno de ejecución Referencias Descripción del servicio

MANUAL DE USUARIO SICVECA DESKTOP. Código: R-02-I-IF-312 Versión: de 19 SICVECA DESKTOP. Manual de Usuario Versión 1.0.

ROS: Servicio de Optimización en Internet

APLICACIONES MÓVILES NATIVAS. Sesión 8: Arquitectura de las aplicaciones Android

Tema 1. Introducción a JAVA

Manual de instalación del cliente JAVA-WS

Desarrollo de Servicios Web con JBuilder

Proyecto FEMI Salud Digital

Documento de trabajo Fundació Antoni Tapies

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

J2SE , Grupo Salenda, S.L.

WEB SERVICES. Manual técnico para desarrollador

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Manual de Firma Electrónica

Universidad ORT - Arquitectura de Software. Requisitos

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Java. Mtro. Manuel Suárez Gutiérrez

Configuración servidor Tomcat

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Taller: Introducción a Windows Communication Foundation

Parsear HTML con htmlparser para Android Guillem Pérez

Hecho por Víctor Orozco Puerto paralelo

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

Apéndices técnicos. Método de representación: forma en que serán representados internamente los documentos.

FRAMEWORK 2 Creación de Servicios Web

Servicio Web de Timbrado

USANDO SERVLETS EN UN SERVIDOR WEB RESIN

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a las Redes de Computadoras. Obligatorio

Introducción a ANTLR. Procesadores de Lenguaje. 1 de 25

FRAMEWORK 2 Recepción de SMS

WEB SERVICES CREACIÓN DEL SERVICIO

Contrato de Servicio

Universidad Nacional de Luján Departamento de Ciencias Básicas Programación III

Aplicateca API Validador de Móviles Certificados SMS -

Las clases Java Socket y ServerSocket

Tutorial: Python + Soap Web Service. Daniel Montenegro Cordero

INDICE Qué es SQLyog Instalación del programa...4

GUI A D E I NSTALA CIO N D E AX IS

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

Federico Peinado

Remote Method Invocation (RMI) de Java

Manual del Servicio Web. Afilnet.com. Afilnet. Servicios de Telecomunicaciones SMS

Índice. Introducción Qué es? Conceptos clave Instalación Ejemplo Hola Mundo Procedimientos Almacenados

Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación

GUIA DE LABORATORIO N 8 A(Netbeans-java,Glassfish)

Transcripción:

Práctica 7: Invocación Web Services con REST Aplicaciones Telemáticas II Introducción Los Web Services permiten realizar aplicaciones distribuidas, usando las ventajas que nos proporciona el protocolo HTTP. Básicamente, los Web Services son la transferencia de información a través de HTTP, obteniendo una respuesta por parte del servidor, y permite la comunicación entre máquinas con un protocolo definido. En esta práctica invocaremos web services de Yahoo! utilizando Java y la arquitectura REST. REST corresponde a un estilo de arquitectura de sistemas de red. La Web se compone de recursos, un recurso corresponde a cualquier item de interes, una representación de un recurso de obtiene a través de una URL. Los servicios SOAP son a veces más complejos de configurar y dificiles de usar, una alternativa más simple es REST, que corresponde a una formalización de las reglas básicas del protocolo HTTP que se aplican a Web services. REST es menos formal que SOAP y solo se refiere a transferencia de documentos sobre HTTP sin un envoltorio como el caso de SOAP. No es necesario un framework de programación para implementar un cliente o un servidor en REST, pero esto implica que todo el manejo/procesamiento de XML/HTML es responsabilidad del implementador. La elección entre utilizar una arquitectura u otra corrresponderá a la aplicación en desarrollo, para muchas empresas el uso de SOAP es una mejor elección debido a que los problemas de transacciones, seguridad o coordinación dependeran del framework de programación y no de la implementación. Puede descargar desde la página del curso en el Campus Global un fichero zip con los ficheros jar que necesitará para compilar y ejecutar su cliente. Ejemplo Yahoo! Web services, permite acceder a contenidos y servicios de Yahoo! en cualquier lenguaje de programación. Para poder utilizar estos Web services es necesario obtener un ID de aplicación, que corresponde a un identificador unico de nuestra aplicación. Para esta práctica pueden utilizar alguno de los siguientes IDs: 1

CTVIC3V34EhHC0vUcJGwDAPlk9msAVIRnUXIY4czn02zVKBm2938ixnn14.1qmH10TADw-- KQCjG6LV34EnMfET4swu_xRF2qmYFRUDvmGTsjCwrn9hi.YFqYFM7AavqGERGUDptLLhig-- Para obtener un ID propio visitar: http://search.yahooapis.com/webservices/register_application Uno de los Web services disponibles, entrega el resultado de la búsqueda de una query en Yahoo!. La especificación del Web service se encuentra en: http://developer.yahoo.com/search/web/v1/websearch.html La URL para realizar el request corresponde a: http://search.yahooapis.com/websearchservice/v1/websearch Parámetros de request: La URL de request acepta muchos parámetros, los que usaremos en este ejemplo son los siguientes: Parámetro Valor Descripción appid string (obligatorio) ID de la aplicación query string (obligatorio) La query a buscar. results integer (10 por defecto) número de resultados. Implementación El siguiente código Java implementa una llamada al Web service WebSearchService para la query supermercado. import java.io.*; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; public class ClienteREST { public static void main(string[] args) throws Exception { String request = "http://api.search.yahoo.com/websearchservice/v1/websearch?" + "appid=id&query=supermercado&results=3"; // crear cliente HTTP HttpClient client = new HttpClient(); GetMethod method = new GetMethod(request); // esto es necesario desde pc s UPF HostConfiguration conf = new HostConfiguration(); conf.setproxy("proxy.upf.es", 8080); // enviar request int statuscode = client.executemethod(conf, method); if (statuscode!= HttpStatus.SC_OK) { 2

System.err.println("Method failed: " + method.getstatusline()); InputStream rstream = null; // obtener respuesta rstream = method.getresponsebodyasstream(); // imprimir la respuesta (XML) BufferedReader br = new BufferedReader(new InputStreamReader(rstream)); String line; while ((line = br.readline())!= null) { System.out.println(line); br.close(); Compilación %> javac -classpath.:commons-logging-1.1.1.jar:commons-codec-1.3.jar: commons-httpclient-3.1.jar:jdom.jar ClienteREST %> java -classpath.:commons-logging-1.1.1.jar:commons-codec-1.3.jar: commons-httpclient-3.1.jar:jdom.jar CLienteREST Ejercicio Debe implementar un cliente en java que permita el siguiente dialogo: 1. Buscar en Web 2. Buscar Cancion 3. Buscar Video 4. Buscar Imagen opcion? _1_ query? _Barcelona_ Titulo : Barcelona hotels, apartments, football tickets, city guide of Barcelona Resumen : Travel and city guide for Barcelona, Spain. URL : http://www.barcelona.com/ Titulo : Barcelona - Wikipedia, the free encyclopedia Resumen : Provides an overview of the history and culture of the Spanish city of Barcelona. URL : http://en.wikipedia.org/wiki/barcelona Titulo : The website of Barcelona city Resumen : The official Barcelona website, created by Barcelona City Council, is a... Watch the latest video which brings you closer to the city of Barcelona.... URL : http://www.bcn.es/english/ihome.htm opcion? _2_ query? Tainted love 3

Titulo : Tainted Love Album : Stomp! Shout! Scream - Original Soundtrack Artista : Various Artists Titulo : Tainted Love Album : 30 Greatest Eighties Songs Artista : The Hit Crew Titulo : Tainted Love Album : What s Your Flavour? Artista : Johnny Clueless... Para esto debe utilizar los siguientes servicios: 1. Audio Search Web Services: Song Search. http://developer.yahoo.com/search/audio/v1/songsearch.html Donde la query corresponda a un titulo de alguna canción (parámetro song ). 2. Image Search Web Services http://developer.yahoo.com/search/image/v1/imagesearch.html 3. Video Search Web Services http://developer.yahoo.com/search/video/v1/videosearch.html Para poder parsear un XML. Usando como ejemplo el siguiente XML: <?xml version="1.0" encoding="utf-8"?> <Empleados> <Persona> <Nombre>Maria</Nombre> <Apellido>Mu~noz</Apellido> <Ciudad>Barcelona</Ciudad> </Persona> <Persona> <Nombre>Pablo</Nombre> <Apellido>Flores</Apellido> <Ciudad>Barcelona</Ciudad> </Persona> <Persona> <Nombre>Paula</Nombre> <Apellido>Torres</Apellido> <Ciudad>Barcelona</Ciudad> </Persona> </Empleados> Para poder parsear este fichero, una manera simple es mediante el siguiente trozo de código java: DocumentBuilderFactory docbuilderfactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docbuilder = docbuilderfactory.newdocumentbuilder(); // parsea un Stream que contiene el documento XML Document doc = docbuilder.parse (rstream); doc.getdocumentelement ().normalize (); 4

NodeList listaempleados = doc.getelementsbytagname("persona"); for (int s = 0; s < listaempleados.getlength(); s++) { Node nodo = listaempleados.item(s); if (nodo.getnodetype() == Node.ELEMENT_NODE) { Element elemento = (Element) nodo; NodeList nombre = elemento.getelementsbytagname("nombre"); Element nombreelemento = (Element) nombre.item(0); NodeList textnombre = nombreelemento.getchildnodes(); System.out.println("Nombre : "+((Node) textnombre.item(0)).getnodevalue().trim()); NodeList apellido = elemento.getelementsbytagname("apellido"); Element apellidoelemento = (Element) apellido.item(0); NodeList textapellido = apellidoelemento.getchildnodes(); System.out.println("Apellido : "+ ((Node) textapellido.item(0)).getnodevalue().trim()); NodeList ciudad = elemento.getelementsbytagname("ciudad"); Element ciudadelemento = (Element) ciudad.item(0); NodeList textciudad = ciudadelemento.getchildnodes(); System.out.println("Ciudad : "+ ((Node) textciudad.item(0)).getnodevalue().trim()); La salida seria: Nombre : Maria Apellido : Mu~noz Ciudad : Barcelona Nombre : Pablo Apellido : Flores Ciudad : Barcelona Nombre : Paula Apellido : Torres Ciudad : Barcelona Entrega Debe entregar todos los archivos generados, a través de la sección de Prácticas del Aula Global en un fichero comprimido, con el nombre NIA P7.zip, antes de las 24:00 del miércoles 5 de marzo. Nota Para parsear el XML es necesario incluir: import org.w3c.dom.document; 5

import org.w3c.dom.*; import javax.xml.parsers.documentbuilderfactory; import javax.xml.parsers.documentbuilder; 6