• No se han encontrado resultados

Funcionamiento de un Cliente WS REST

• La petición de un cliente WS REST es muy simple, sólo debemos conocer el la URI del Servicio REST.

• Etapas:

1. Localizar el WS REST

2. Creación de una instancia del URI del WS. 3. Apertura de una conexión con el WS 4. Realización de la llamada al método deseado. 5. Obtener la respuesta y tratarla

Funcionamiento de un Cliente WS REST

Formulario HTML como CLIENTE REST.

• Podemos tener un Web Servicio REST, que esté preparado para recibir parámetros desde un formulario.

@FormParam

• Nos bastaría hacer un formulario HTML para poder llamar al Servicio Web y que éste nos contestara.

• No necesitamos obtener una conexión con el Servicios, sólo utilizarlo y ya. • Este tipo de Servicios:

 Trabajan con Métodos HTML POST

 Están preparados para devolver código HTML y ser interpretado por el Navegador. 114

Funcionamiento de un Cliente WS REST

Formulario HTML como CLIENTE REST. <html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title>

</head> <body>

<p>This page uses frames. The current browser you are using does not support frames.</p>

<form action="http://localhost:8081/RESTService/rest/Saludo/bienvenido" method="post"> <input type="text" name="nombre">

<input type="text" name="apellido">

<input type="submit" value="Enviar información"> </form>

</body> </html>

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación XML

• Deberemos crear una instancia URI con el Web Service y realizar una conexión del él.

• Esta representación se trata como un Flujo de Caracteres (InputStream) que serán encapsulados en elementos BufferReaders.

BufferedReader in = new BufferedReader(new InputStreamReader ( tc.getInputStream() ) );

• Su resultado podemos mostrarlo en pantalla o derivarlo a algún fichero para su tratamiento XML.

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación XML

public class RESTClient {

public static void main(String[] args) { try {

URL twitter = new URL("http://maps.googleapis.com/maps/api/distancematrix/xml?& mode=driving&sensor=false&origins=Madrid&destinations=Barcelona"); URLConnection tc = twitter.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader ( tc.getInputStream() ) ); String line;

while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

Funcionamiento de un Cliente WS REST

RESULTADO <application/xml; charset=UTF-8 <?xml version="1.0" encoding="UTF-8"?> <DistanceMatrixResponse> <status>OK</status> <origin_address>Madrid, Spain</origin_address> <destination_address>Barcelona, Spain</destination_address> <row> <element> <status>OK</status> <duration> <value>20162</value> <text>5 hours 36 mins</text> </duration> <distance> <value>621213</value> <text>621 km</text> </distance> </element> </row> </DistanceMatrixResponse> : 118

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación RSS

• Podemos utilizar el mismo recurso, pero con otra representación. • Ahora utilizaremos RSS para la obtención de los datos

• Utilizaremos el URI: http://twitter.com/statuses/public_timeline.rss • Utilizaremos el navegador FireFox para mostrar el resultado de la petición

realizada.

• El cliente lo implementaremos con un JSP.

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación RSS

<%@ page contentType="text/xml; charset=UTF-8" %> <%@ page import="java.io.BufferedReader, java.io.IOException,

java.io.InputStreamReader, java.net.MalformedURLException, java.net.URL, java.net.URLConnection" %> <%

try {

URL twitter = new URL("http://www.redesparalaciencia.com/redes.rss"); URLConnection tc = twitter.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader(tc.getInputStream())); String line;

while ((line = in.readLine()) != null) { out.println(line); } in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } %> Cliente.jsp

Para probar el ejemplo, debemos copiar el fichero al directorio /webapps/ de TOMCAT O crear un Proyecto Dinamico y JSP

Funcionamiento de un Cliente WS REST

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación HTML

• También podemos obtener la representación de un recurso en formato HTML.

• Podemos utilizar un servlet para ejecutar una parte de código y devolver un resultado HTML.

• También podemos obtener el recurso en XML y convertirlo a HTML. • Las peticiones al recurso serían similares a las anteriores.

Funcionamiento de un Cliente WS REST

CLIENTE REST con representación HTML

public class RESTfulServletClient extends HttpServlet {

public void doGet(HttpServletRequest req,HttpServletResponse res) { // Set mime-type res.setContentType("image/jpeg"); BufferedReader in = null; try { : :

// Conectando con la API de Twitter

URL twitter = new URL("https://dev.twitter.com/docs/api/1/get/users/lookup"); URLConnection tc = twitter.openConnection();

in = new BufferedReader(new InputStreamReader(tc.getInputStream())); String line; : : } Servlet

JSON

JavaScript Object Notation http://tools.ietf.org/html/rfc4627 124

© JMA 2016. All rights reserved

Introducción

• JSON (JavaScript Object Notation) es un formato sencillo para el

intercambio de información.

• El formato JSON permite representar estructuras de datos (arrays) y

objetos (arrays asociativos) en forma de texto.

• La notación de objetos mediante JSON es una de las características

principales de JavaScript y es un mecanismo definido en los

fundamentos básicos del lenguaje.

• En los últimos años, JSON se ha convertido en una alternativa al

formato XML, ya que es más fácil de leer y escribir, además de ser

mucho más conciso.

• No obstante, XML es superior técnicamente porque es un lenguaje

de marcado, mientras que JSON es simplemente un formato para

intercambiar datos.

• La especificación completa del JSON es la RFC 4627, su tipo MIME

oficial es application/json y la extensión recomendada es .json.

Estructuras

• JSON está constituido por dos estructuras:

– Una colección de pares de nombre/valor. En los lenguajes

esto es conocido como un objeto, registro, estructura,

diccionario, tabla hash, lista de claves o un arreglo

asociativo.

– Una lista ordenada de valores. En la mayoría de los

lenguajes, esto se implementa como tablas, arreglos,

vectores, listas o secuencias.

• Estas son estructuras universales; virtualmente todos

los lenguajes de programación las soportan de una

forma u otra. Es razonable que un formato de

intercambio de datos que es independiente del

Documento similar