请建议在python中使用soap的库。
现在,我正在尝试使用"suds“,我不能理解如何从服务器回复中获取http头
代码示例:
from suds.client import Client
url = "http://10.1.0.36/money_trans/api3.wsdl"
client = Client(url)
login_res = client.service.Login("login", "password")变量"login_res“包含xml答案,但不包含http头。但我需要从他们那里获取会话id。
发布于 2010-03-21 10:36:48
我认为你实际上是想在Cookie Jar中寻找它。
client = Client(url)
login_res = client.service.Login("login", "password")
for c in client.options.transport.cookiejar:
if "sess" in str(c).lower():
print "Session cookie:", c我没有把握。我自己还是个肥皂泡新手。但这是我的直觉告诉我的
发布于 2011-04-12 08:14:12
来自Ishpeck的响应是正确的。我只是想添加一些关于Suds内部的东西。
suds客户端是位于urllib2 HTTP opener之上的一个庞大的抽象层。HTTP client、cookiejar、头、请求和响应都存储在transport对象中。问题是,除了cookiejar中的cookie之外,所有这些活动都不会被缓存或存储在传输中,甚至有时跟踪这些cookie也会有问题。
如果您想在调试时看到发生了什么,我的建议是将以下代码添加到您的代码中:
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)Suds makes use of the native logging module,因此,通过打开调试日志,您可以看到所有正在执行的活动,包括标题、变量、有效负载、URL等。这为我节省了大量的时间。
除此之外,如果您确实需要明确跟踪headers上的状态,则需要创建一个suds.transport.http.HttpTransport对象的自定义子类,并重载一些默认行为,然后将其传递给Client构造函数。
下面是一个超级简单的例子:
from suds.transport.http import HttpTransport, Reply, TransportError
from suds.client import Client
class MyTransport(HttpTransport):
# custom stuff done here
mytransport_instance = MyTransport()
myclient = Client(url, transport=mytransport_instance)发布于 2020-01-29 22:52:15
我认为Suds库的文档很差,所以我建议你使用Zeep。它是Python中的SOAP请求库。它的文档并不完美,但它比Suds Doc清晰得多。
https://stackoverflow.com/questions/2418172
复制相似问题