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 Cliente , pero no lo entiendo demasiado bien. ¿Hay algo más que pueda investigar que sea más adecuado para ser una biblioteca SOAP Client para Python?
Editar: en caso de que ayude, estoy usando Python 2.6.
python
soap
soap-client
damon
fuente
fuente
Respuestas:
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 mencionado anteriormente, me referiré a la página de Python WebServices 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, por el momento, no creo que haya una "mejor" biblioteca de Python SOAP. Cada uno de los principales disponibles tiene sus propios pros y contras.
Bibliotecas más antiguas:
SOAPy : Fue el "mejor", pero ya no se mantuvo. 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 de SOAPy (arriba).
Bibliotecas "más nuevas":
SUDS : Muy Pythonic, 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 ver SUDS-py3)
SUDS-py3 : la versión Python3 de SUDS
Spyne : Crear servidores es fácil, crear clientes es un poco más desafiante. Falta algo de documentación.
ladon : Crear servidores es muy parecido a soaplib (usando un decorador). Ladon expone más interfaces que SOAP al mismo tiempo sin necesidad de 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 incluye con web2py.
De lo anterior, solo he usado SUDS personalmente, y me gustó mucho.
fuente
urllib2
problema conocido de Python . Vea mi respuesta para más detalles.Seguí el consejo de otras respuestas a esta pregunta y probé SUDS . Después de usarlo "con ira", debo estar de acuerdo: ¡SUDS es muy agradable! ¡Muy recomendable!
Tuve problemas para llamar a los servicios web basados en HTTPS desde detrás de un proxy. Al momento de escribir esto, esto afecta a todos los clientes de servicios web de Python que usan
urllib2
, por lo que documentaré la solución aquí.El
urllib2
módulo que se envía con python 2.6.2 y versiones posteriores no emitirá unCONNECT
proxy para las sesiones HTTPS-over-HTTP-proxy. Esto da como resultado un tiempo de espera prolongado o, si tiene suerte, un error similar al siguiente:Este fue el problema 1424152 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 .
fuente
Tuve buena experiencia con SUDS https://fedorahosted.org/suds
Usó su TestSuite como documentación.
fuente
pip install suds-jurko
SUDS es el camino a seguir, no hay duda al respecto.
fuente
Solo una advertencia para su información para las personas que miran SUDS, hasta que se resuelva este ticket, SUDS no admite la etiqueta de "elección" en WSDL:
https://fedorahosted.org/suds/ticket/342
ver: espuma y etiqueta de elección
fuente
SUDS es fácil de usar, pero no se garantiza que sea reentrante. Si mantiene el objeto WSDL Client () en una aplicación con subprocesos para un mejor rendimiento, hay algunos riesgos involucrados. La solución a este riesgo, el método clone (), arroja el error irrecuperable Python 5508, que parece imprimirse pero en realidad no arroja una excepción. Puede ser confuso, pero funciona. Sigue siendo, con mucho, el mejor cliente de Python SOAP.
fuente
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 autogenerado o xml), introspección y generación WSDL, cumplimiento estándar WS-I, compatibilidad (incluyendo Java AXIS, .NET y Jboss WS). Se incluye en Web2Py para habilitar soluciones de pila completa (que complementan otros protocolos compatibles como XML_RPC, JSON, AMF-RPC, etc.).
Si alguien está aprendiendo SOAP o quiere investigarlo, creo que es una buena opción para comenzar.
fuente
Creo que soaplib ha desaprobado a su cliente SOAP ('remitente') en favor de la espuma. En este punto, soaplib se centra en ser un servidor SOAP agnóstico de marco web ('receptor'). Actualmente, soaplib se encuentra en desarrollo activo y generalmente se trata en la lista de correo Python SOAP:
http://mail.python.org/mailman/listinfo/soap
fuente
En mi conclusión tenemos esto:
Lado del cliente de jabón:
use solo Suds-jurko (actualizado 2016) la espuma está bien mantenida y actualizada.ACTUALIZACIÓN 06/2017: la biblioteca suds-jurko no está actualizada y aparentemente abandonada ,
Probé zeep biblioteca, pero tengo limitaciones alrededor de fichas, por ahora sólo admite UsernameToken, puedo informar de un error al crear marca de tiempo de actualización de fichas y autor del código para solucionarlo.
Zeep comienza bien y tiene buena documentación , así que recientemente migré mi código de espuma a zeep y funciona bien.
Lado del servidor de jabón:Tenemos el uso de TGWS, soaplib (pysimplesoap no probado) en mi humilde opinión y la ayuda de soaplib debe ser la elección.Atentamente,
fuente
Como sugerí aquí, le recomiendo que haga el suyo. En realidad no es tan difícil y sospecho que esa es la razón por la que no hay mejores bibliotecas Python SOAP.
fuente
La espuma es bastante buena. Intenté SOAPpy pero no pude que funcionara de la manera que necesitaba, mientras que la espuma funcionó casi de inmediato.
fuente
¿Podría esto ayudar: http://users.skynet.be/pascalbotte/rcx-ws-doc/python.htm#SOAPPY
Lo encontré buscando
wsdl
ypython
, con el ser racional, que necesitarías una descripción wsdl de un servidor SOAP para hacer envoltorios de clientes útiles ...fuente
Habíamos usado SOAPpy de Python Web Services , pero parece que ZSI (misma fuente) lo está reemplazando.
fuente
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 sobre el código del encabezado en el lugar incorrecto) pero aparte de eso funcionó y continúa haciéndolo de manera muy confiable.
fuente