• 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