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