Universidad Carlos III de Madrid Arquitecturas de Sistemas E-Business Saulo Barajas 31may04 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 1 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/ 3 Uso de Google Web API, SOAP y WSDL 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 2 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 5 Uso de Google Web API, SOAP y WSDL !" #" $ %& 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 3 !" #" $ & ' # 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 7 Uso de Google Web API, SOAP y WSDL '$ # " " <?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> Uso de Google Web API, SOAP y WSDL 8 4 '$ # " " <?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> Uso de Google Web API, SOAP y WSDL 9 ( Clase Significado y algunos métodos GoogleSearch Acceso a los servicios de Google por SOAP $&% '(*)+,!-.#/021+345# 768 " 9 ::8 ';'< =2>!?'@68 +,ABC 021#" . +,AED2 FAG*# ,F#H I> <@2'" 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 GoogleSearchFault Manejo de excepciones !#" Uso de Google Web API, SOAP y WSDL 10 5 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 <soap:call> en XSP. Elemento Se usan ambos métodos en la aplicación 11 Uso de Google Web API, SOAP y WSDL " #" )*+ <map:match pattern=""> <map:generate src="index.htm"/> <map:serialize/> </map:match> Uso de Google Web API, SOAP y WSDL 12 6 " #" ),+ Operación “doSpellingSuggestion” <map:match pattern="corregir"> <map:generate src="corregir.xsp" type="serverpages"/> <map:transform src="resultado-corregir.xsl"/> <map:serialize/> </map:match> 13 Uso de Google Web API, SOAP y WSDL " #" )-+ 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 7 " #" ).+ 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 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 8 Preguntas y comentarios 9