Uso de Google Web API, SOAP y WSDL Arquitecturas de Sistemas E-Business

Anuncio
Uso de Google Web
API, SOAP y WSDL
Universidad Carlos III de Madrid
Arquitecturas de Sistemas E-Business
Saulo Barajas
31may04
Contenido
Introducción
Interfaz WSDL de Google API
Ejemplo de petición y respuesta SOAP
Clases Java de Google API
Aplicación de ejemplo
Conclusiones
Preguntas y comentarios
Uso de Google Web API, SOAP y WSDL
2
Introducción
Google proporciona una API experimental que
permite acceder por SOAP a sus servicios de
búsqueda.
Componentes:
• Descripción WSDL de las operaciones
• Servidor que procesa las peticiones SOAP (hasta
1000 diarias por cliente)
• Clases Java para invocar las operaciones
• Ejemplos en Java y en .Net
http://www.google.com/apis/
Uso de Google Web API, SOAP y WSDL
3
Web service de Google
2. Petición SOAP
Servidor
web
5. Respuesta
SOAP
1. Petición HTTP
6. Respuesta
en HTML
Cliente
web
Servidor
SOAP de
Google
4. Respuesta
Google
3. Petición
Google
Base de
datos de
Google
• La aplicación desarrollada utiliza Cocoon en el servidor web
• La API de Google posibilita los pasos 2 y 5
• Google ofrece archivo WSDL describiendo las operaciones disponibles
Uso de Google Web API, SOAP y WSDL
4
Interfaz WSDL
Operación
Entradas
Tipo
Salida
Tipo
doGetCachedPage
key
url
xsd:string
xsd:string
return
xsd:base64Binary
doGoogleSearch
key
q
start
maxResults
filter
restrict
safeSearch
lr
ie
oe
xsd:string
xsd:string
xsd:int
xsd:int
xsd:boolean
xsd:string
xsd:boolean
xsd:string
xsd:string
xsd:string
return
typens:GoogleSearc
hResult
xsd:string
xsd:string
return
xsd:string
doSpellingSuggestion key
phrase
http://api.google.com/GoogleSearch.wsdl
Uso de Google Web API, SOAP y WSDL
5
Tipo complejo GoogleSearchResult
Elemento
Tipo
documentFiltering
searchComments
estimatedTotalResultsCount
estimateIsExact
resultElements
searchQuery
startIndex
endIndex
searchTips
directoryCategories
searchTime
xsd:boolean
xsd:string
xsd:int
xsd:boolean
typens:ResultElementArray
xsd:string
xsd:int
xsd:int
xsd:string
typens:DirectoryCategoryArray
xsd:double
Uso de Google Web API, SOAP y WSDL
6
Tipo complejo ResultElement
Elemento
Tipo
summary
URL
snippet
title
cachedSize
relatedInformationPresent
hostName
directoryCategory
directoryTitle
xsd:string
xsd:string
xsd:string
xsd:string
xsd:string
xsd:boolean
xsd:string
typens:DirectoryCategory
xsd:string
Uso de Google Web API, SOAP y WSDL
7
Ejemplo petición SOAP
<?xml version='1.0'?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' xmlns:typens='urn:GoogleSearch'
xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<SOAP-ENV:Body>
<ns1:doSpellingSuggestion SOAPENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'
xmlns:ns1='urn:GoogleSearch'>
<key xsi:type='xsd:string'>
aaaaaaaaaabbbbbbbccccccccddddd
</key>
<phrase xsi:type='xsd:string'>
misisipi
</phrase>
</ns1:doSpellingSuggestion>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Uso de Google Web API, SOAP y WSDL
8
Ejemplo respuesta SOAP
<?xml version='1.0' encoding='UTF-8'?>
<SOAP-ENV:Envelope xmlns:SOAPENV='http://schemas.xmlsoap.org/soap/envelope/'
xmlns:xsi='http://www.w3.org/1999/XMLSchema-instance'
xmlns:xsd='http://www.w3.org/1999/XMLSchema'>
<SOAP-ENV:Body>
<ns1:doSpellingSuggestionResponse
xmlns:ns1='urn:GoogleSearch' SOAP-
ENV:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'>
<return xsi:type='xsd:string'>
mississippi
</return>
</ns1:doSpellingSuggestionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Uso de Google Web API, SOAP y WSDL
9
Clases Java de Google API
Clase
Significado y algunos métodos
GoogleSearch
Acceso a los servicios de Google por SOAP
byte[ ] doGetCachedPage (String url)
GoogleSearchResult doSearch()
String doSpellingSuggestion(String phrase)
GoogleSearchResult Resultados de una búsqueda
GoogleSearchResultElement[ ] getResultElements()
double getSearchTime()
GoogleSearchResult Un elemento de búsqueda
Element
String getURL()
String getTitle()
GoogleSearchDirectoryCategory getDirectoryCategory()
GoogleSearchDirect
oryCategory
Utilizado por GoogleSearchResult
String getFullViewableName()
GoogleSearchFault
Manejo de excepciones
Uso de Google Web API, SOAP y WSDL
10
Acceso a Google desde Cocoon
Las operaciones de Google son accesibles desde
Cocoon de dos formas:
• Utilizando las clases Java proporcionadas. Sus
métodos generan automáticamente los mensajes
SOAP  Requiere código Java en páginas XSP.
• Construyendo los mensajes SOAP y procesando
las respuestas del servidor  Elemento
<soap:call> en XSP.
Se usan ambos métodos en la aplicación
Uso de Google Web API, SOAP y WSDL
11
Aplicación simple (1)
<map:match pattern="">
<map:generate src="index.htm"/>
<map:serialize/>
</map:match>
Uso de Google Web API, SOAP y WSDL
12
Aplicación simple (2)
Operación “doSpellingSuggestion”
<map:match pattern="corregir">
<map:generate src="corregir.xsp" type="serverpages"/>
<map:transform src="resultado-corregir.xsl"/>
<map:serialize/>
</map:match>
Uso de Google Web API, SOAP y WSDL
13
Aplicación simple (3)
Operación “doGoogleSearch”
<map:match pattern="buscar">
<map:generate src="buscar.xsp" type="serverpages"/>
<map:transform src="resultado-buscar.xsl"/>
<map:serialize/>
</map:match>
Uso de Google Web API, SOAP y WSDL
14
Aplicación simple (4)
Operación “doGetCachedPage”
<map:match pattern="vercache">
<map:generate src="vercache.xsp" type="serverpages"/>
<map:transform src="resultado-vercache.xsl"/>
<map:serialize/>
</map:match>
Uso de Google Web API, SOAP y WSDL
15
Conclusiones
La Google de API permite experimentar con
web services. No se ofrece comercialmente.
El uso de los web services en Cocoon
resulta más sencillo que en otros
lenguajes debido a su orientación
a XML y sus posibilidades de transformación de documentos.
La aplicación simple presentada ofrece un
punto de partida para exprimir más la API de
Google o experimentar con otros web services.
Uso de Google Web API, SOAP y WSDL
16
Uso de Google Web API,
SOAP y WSDL
Preguntas y comentarios
Descargar