example - suds python
¿Qué bibliotecas de cliente SOAP existen para Python y dónde está la documentación para ellas? (14)
Como sugerí here te recomiendo que ruines la tuya. En realidad no es tan difícil y sospecho que esa es la razón por la que no hay mejores bibliotecas SOAP de Python.
Nunca he usado SOAP antes y soy algo nuevo en Python. Estoy haciendo esto para familiarizarme con ambas tecnologías. He instalado SOAPlib y he intentado leer la documentación de su Client , pero no lo entiendo muy bien. ¿Hay algo más que pueda ver que sea más adecuado para ser una biblioteca de SOAP Client para Python?
Edición: por si acaso ayuda, estoy usando Python 2.6.
Creo que soaplib ha desaprobado a su cliente SOAP (''remitente'') a favor de la espuma. En este punto, soaplib se enfoca en ser un servidor SOAP (''receptor'') independiente del marco web. Actualmente, soaplib se encuentra en desarrollo activo y generalmente se analiza en la lista de correo SOAP de Python:
En mi conclusión tenemos esto:
Lado del cliente de jabón:
El uso exclusivo de bitbucket.org/jurko/suds (actualizado 2016) suds está bien mantenido y actualizado.
ACTUALIZACIÓN 06/2017: la biblioteca suds-jurko no está actualizada y aparentemente abandonada ,
zeep biblioteca de zeep , pero tengo limitaciones en cuanto a tokens, por ahora solo zeep compatible con UsernameToken, zeep un bug para crear el token de marca de tiempo y el autor actualiza el código para solucionarlo.
Zeep comienza bien y tiene buena documentation , por lo que recientemente migré mi código de espuma a zeep y funciona bien.
Lado del servidor de jabón:
Tenemos TGWS, soaplib (pysimplesoap no probado) IMHO uso y ayuda soaplib debe ser la opción.
Atentamente,
Estoy usando SOAPpy con Python 2.5.3 en una configuración de producción.
Tuve que editar manualmente un par de archivos en SOAPpy (algo acerca de que el código del encabezado está en el lugar equivocado) pero aparte de eso, funcionó y continúa haciéndolo de manera muy confiable.
Habíamos utilizado SOAPpy de los Servicios web de Python , pero parece que ZSI (la misma fuente) lo está reemplazando.
Lanzamos una nueva biblioteca: pysimplesoap , que brinda soporte para un cliente / servidor simple y funcional. Sus objetivos son: facilidad de uso y flexibilidad (no se requieren clases, código generado automáticamente o xml), introspección y generación WSDL, conformidad con el estándar WS-I, compatibilidad (incluido Java AXIS, .NET y Jboss WS). Se incluye en Web2Py para habilitar soluciones de pila completa (complementando otros protocolos compatibles como XML_RPC, JSON, AMF-RPC, etc.).
Si alguien está aprendiendo JABÓN o quiere investigarlo, creo que es una buena opción comenzar.
Podría ayudar esto: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Lo encontré al buscar wsdl
y python
, con el ser racional, que necesitarías una descripción de wsdl de un servidor SOAP para hacer cualquier envoltorio útil del cliente ...
SUDS es el camino a seguir, no hay duda al respecto.
SUDS es fácil de usar, pero no se garantiza que sea reingresante. Si mantiene el objeto WSDL Client () en una aplicación con hilos para un mejor rendimiento, existe cierto riesgo. La solución a este riesgo, el método clone (), lanza el error irrecuperable de Python 5508, que parece imprimir pero no lanzar una excepción. Puede ser confuso, pero funciona. Todavía es, por mucho, el mejor cliente SOAP de Python.
Seguí el consejo de otras respuestas a esta pregunta y le SUDS una oportunidad a SUDS . Después de usarlo "enojado", debo estar de acuerdo: ¡SUDS es muy bueno! ¡Muy recomendable!
Me encontré con problemas para llamar a servicios web basados en HTTPS desde detrás de un proxy. En el momento de escribir este artículo, esto afecta a todos los clientes de servicios web de Python que utilizan urllib2
, por lo que documentaré la solución aquí.
El módulo urllib2
se envía con python 2.6.2 y urllib2
no emitirá un CONNECT
al proxy para las sesiones de HTTPS sobre HTTP. Esto resulta en un largo tiempo de espera, o si tiene suerte, un error que se parece a:
abort: error: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Este fue el número issue1424152 en el rastreador de errores de Python. Hay parches adjuntos al informe de errores que solucionarán esto en Python 2.xy Python 3.x. El problema ya está solucionado .
Solo una advertencia de FYI para las personas que miran SUDS, hasta que se resuelva este ticket, SUDS no admite la etiqueta "elección" en WSDL:
Tuve una buena experiencia con SUDS SUDS
Utilizó su TestSuite como documentación.
la espuma es bastante buena Intenté SOAPpy, pero no conseguí que funcionara de la manera que necesitaba, mientras que la espuma funcionó de manera bastante inmediata.
Actualización (2016):
Si solo necesita un cliente SOAP, hay una biblioteca bien mantenida llamada zeep . Es compatible con Python 2 y 3 :)
Actualizar:
Además de lo que se mencionó anteriormente, me referiré a la página de Servicios web de Python , que siempre está actualizada con todos los módulos recomendados y mantenidos activamente para SOAP y todos los demás tipos de servicios web.
Desafortunadamente, en este momento, no creo que haya una "mejor" biblioteca SOAP de Python. Cada uno de los principales disponibles tiene sus pros y sus contras.
Bibliotecas más antiguas:
SOAPIA : fue el "mejor", pero ya no se mantiene. No funciona en Python 2.5+
ZSI : Muy doloroso de usar, y el desarrollo es lento. Tiene un módulo llamado "SOAPpy", que es diferente a SOAPy (arriba).
Bibliotecas "más nuevas":
SUDS : muy SOFT, y fácil de crear clientes SOAP que consumen WSDL. Crear servidores SOAP es un poco más difícil. (Este paquete no funciona con Python3. Para Python3 vea SUDS-py3)
zeep : La versión Python3 de SUDS
spyne : crear servidores es fácil, crear clientes un poco más desafiante. Falta algo de documentación.
ladon : crear servidores es muy parecido a en soaplib (usando un decorador). Ladon expone más interfaces que SOAP al mismo tiempo sin necesidad de un código de usuario adicional.
pysimplesoap : muy ligero pero útil tanto para el cliente como para el servidor: incluye una integración de servidor web2py que se envía con web2py.
- SOAPpy : a SOAPpy del SOAPpy abandonado que se encuentra en el enlace ZSI anterior, esta versión se mantuvo hasta 2011, ahora parece que también se ha abandonado.
- soaplib : Biblioteca Python fácil de usar para escribir y llamar a servicios web de soap. Los servicios web escritos con soaplib son simples, ligeros, funcionan bien con otras implementaciones de SOAP y pueden implementarse como aplicaciones WSGI.
- osa : Una biblioteca de clientes SOAP python rápida / delgada y fácil de usar.
De los anteriores, solo he usado SUDS personalmente, y me ha gustado mucho.