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