Ing. Pablo Almeida Haro Msc.
CONSUMIDOR DE GOOGLE FIND
Este tutorial tiene como objetivo el consumir el servicio de google find utilizando en el cliente JSF, Jersey, y Json.
CREACION DEL PROYECTO
*Seleccionar file/new/Project. Ingresar nombre de proyecto y ubicación:
*Ingresar servidor y versión de JEE
*Seleccionar el framework
*Reemplazar el código del index.xhtml por lo siguiente:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="consumo">
Counsumo de servicios web - Google
<br></br>
Ingrese información a buscar:
<h:inputText id="valor" value="#{clase_find.dato}"></h:inputText>
<br></br>
<h:commandButton id="Buscar" value="Buscar" action="#{clase_find.buscar}" >
</h:commandButton>
<br></br>
<h:inputTextarea id="resultado" value="#{clase_find.URLS}" >
</h:inputTextarea>
</h:form>
</h:body>
</html>
AGREGAR LIBRERIAS
*Para agregar las librerías Jersey colocar un click derecho sobre library/add libary y seleccionar Jersey
*Para agregar JSON. Crear el paquete Json colocando click derecho sobre packages/new/java package
*Crear las clases: JSONArray.java, JSONException.java, JSONObject.java, JSONString.java, JSONTokener,java dentro del paquete org.json colocando click derecho sobre el paquete org.jason/new/java class. Buscar en internet el código y pegar en lugar del código generado por el wizard. Buscar el código en www.json.org
*Crear una clase correspondiente al backing bean. Click derecho sobre source packages/new java class. Ingresar nombre de la clase y paquete
*Pegar el código que sigue a continuación
package pkg_find;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import java.util.ArrayList;
import java.util.Scanner;
import javax.ws.rs.core.MediaType;
import org.json.* ;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean()
@SessionScoped
public class clase_find {
String URLS="";
public clase_find()
{
}
public String dato="";
public String getURLS() {
return URLS;
}
public void setURLS(String URLS) {
this.URLS = URLS;
}
public String getDato() {
return dato;
}
public void setDato(String dato) {
this.dato = dato;
}
public void buscar()
{
String consulta;
String URI = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
Client cliente = Client.create();
consulta=dato.trim();
consulta = consulta.replace(" ", "%20");
URI += consulta;
WebResource recurso = cliente.resource(URI);
String result = recurso.accept(MediaType.APPLICATION_JSON).get(String.class);
try
{
mostarResultados(result);
} catch (JSONException ex) {
ex.printStackTrace();
}
}
public void mostarResultados(String respuesta) throws JSONException {
JSONObject objJSON = new JSONObject(respuesta);
JSONObject responseData = objJSON.getJSONObject("responseData");
JSONArray results = responseData.getJSONArray("results");
JSONObject link;
for (int i = 0; i < results.length(); i++) {
link = results.getJSONObject(i);
URLS+=link.getString("url");
//link.getString("title");
//link.getString("content");
}
}
public static long obtenerTotalResultados(String respuesta){
long total = 0;
try {
JSONObject objJSON = new JSONObject(respuesta);
JSONObject responseData = objJSON.getJSONObject("responseData");
JSONObject cursor = responseData.getJSONObject("cursor");
total = cursor.getLong("estimatedResultCount");
} catch (JSONException ex) {
ex.printStackTrace();
}
return total;
}
}
*Correr la aplicación