| You are here: Inicio > Inmersión en Python > Servicios web SOAP | << >> | ||||
Inmersión en PythonPython de novato a experto |
|||||
Capítulo 11 se centró en los servicios web sobre HTTP orientados a documentos. El “parámetro de entrada” era la URL y el “valor devuelto” era un documento XML que debíamos responsabilizarnos de interpretar.
Este capítulo se centrará en los servicios web SOAP, que tienen un enfoque más estructurado. En lugar de trabajar directamente con consultas HTTP y documentos XML SOAP nos permite simular llamadas a función que devuelven tipos de datos nativos. Como veremos, la ilusión es casi perfecta; podemos “invocar” una función mediante una biblioteca de SOAP, con la sintaxis estándar de Python, y resulta que la función devuelve valores y objetos de Python. Sin embargo, bajo esa apariencia la biblioteca de SOAP ha ejecutado en realidad una transacción compleja que implica varios documentos XML y un servidor remoto.
SOAP es una especificación compleja y es un poco inexacto decir que SOAP se trata de llamadas a funciones remotas. Algunas personas añadirían que SOAP permite realizar paso asíncrono de mensajes en un solo sentido y servicios web orientados al documento. Y estarían en lo correcto; SOAP se puede usar de esa manera y de muchas maneras diferentes. Pero este capítulo se centrará en el también llamado SOAP “al estilo RPC” (llamar a una función remota y obtener sus resultados).
Usted usa Google, ¿verdad? Es un motor de búsquedas popular. ¿Ha deseado alguna vez poder acceder a los resultados de búsquedas de Google de forma programática? Ahora puede. Aquí tiene un programa que busca en Google desde Python.
from SOAPpy import WSDL # you'll need to configure these two values; # see http://www.google.com/apis/ WSDLFILE = '/path/to/copy/of/GoogleSearch.wsdl' APIKEY = 'YOUR_GOOGLE_API_KEY' _server = WSDL.Proxy(WSDLFILE) def search(q): """Search Google and return list of {title, link, description}""" results = _server.doGoogleSearch( APIKEY, q, 0, 10, False, "", False, "", "utf-8", "utf-8") return [{"title": r.title.encode("utf-8"), "link": r.URL.encode("utf-8"), "description": r.snippet.encode("utf-8")} for r in results.resultElements] if __name__ == '__main__': import sys for r in search(sys.argv[1])[:5]: print r['title'] print r['link'] print r['description'] print
Puede importar esto como módulo y usarlo desde otro programa mayor, o puede ejecutar el script desde la línea de órdenes. Desde la línea de órdenes puede indicar la consulta de búsqueda como argumento, y como resultado obtendrá la URL, título y descripción de los cinco primeros resultados de Google.
Aquí tiene la salida de ejemplo para una búsqueda de la palabra “python”
C:\diveintopython\common\py> python search.py "python" <b>Python</b> Programming Language http://www.python.org/ Home page for <b>Python</b>, an interpreted, interactive, object-oriented, extensible<br> programming language. <b>...</b> <b>Python</b> is OSI Certified Open Source: OSI Certified. <b>Python</b> Documentation Index http://www.python.org/doc/ <b>...</b> New-style classes (aka descrintro). Regular expressions. Database API. Email Us.<br> docs@<b>python</b>.org. (c) 2004. <b>Python</b> Software Foundation. <b>Python</b> Documentation. <b>...</b> Download <b>Python</b> Software http://www.python.org/download/ Download Standard <b>Python</b> Software. <b>Python</b> 2.3.3 is the current production<br> version of <b>Python</b>. <b>...</b> <b>Python</b> is OSI Certified Open Source: Pythonline http://www.pythonline.com/ Dive Into <b>Python</b> http://diveintopython.org/ Dive Into <b>Python</b>. <b>Python</b> from novice to pro. Find: <b>...</b> It is also available in multiple<br> languages. Read Dive Into <b>Python</b>. This book is still being written. <b>...</b>
<< Resumen |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
Instalación de las bibliotecas de SOAP >> |