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
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/
Servidor SOAP de Google Web service de Google 2. Petición SOAP Servidor SOAP de Google Servidor web 5. Respuesta SOAP 3. Petición Google 1. Petición HTTP 6. Respuesta en HTML 4. Respuesta Google Cliente web 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
Interfaz WSDL http://api.google.com/GoogleSearch.wsdl Operación Entradas Tipo Salida doGetCachedPage key url xsd:string return xsd:base64Binary doGoogleSearch q start maxResults filter restrict safeSearch lr ie oe xsd:int xsd:boolean typens:GoogleSearchResult doSpellingSuggestion phrase http://api.google.com/GoogleSearch.wsdl
Tipo complejo GoogleSearchResult Elemento Tipo documentFiltering searchComments estimatedTotalResultsCount estimateIsExact resultElements searchQuery startIndex endIndex searchTips directoryCategories searchTime xsd:boolean xsd:string xsd:int typens:ResultElementArray typens:DirectoryCategoryArray xsd:double
Tipo complejo ResultElement Elemento Tipo summary URL snippet title cachedSize relatedInformationPresent hostName directoryCategory directoryTitle xsd:string xsd:boolean typens:DirectoryCategory
Ejemplo petición SOAP <key xsi:type='xsd:string'> <?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 SOAP-ENV: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>
Ejemplo respuesta SOAP <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV='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>
Clases Java de Google API 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() GoogleSearchResultElement Un elemento de búsqueda String getURL() String getTitle() GoogleSearchDirectoryCategory getDirectoryCategory() GoogleSearchDirectoryCategory Utilizado por GoogleSearchResult String getFullViewableName() GoogleSearchFault Manejo de excepciones
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
Aplicación simple (1) <map:match pattern=""> <map:generate src="index.htm"/> <map:serialize/> </map:match>
Operación “doSpellingSuggestion” 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>
Operación “doGoogleSearch” 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>
Operación “doGetCachedPage” 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>
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 trans- formació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.
Preguntas y comentarios Uso de Google Web API, SOAP y WSDL Preguntas y comentarios