Ishpeck的回应是正确的。我只是想添加一些关于 Suds 内部的东西。
suds 客户端是 urllib2 HTTP 开启器之上的一个大抽象层。HTTP 客户端、cookiejar、标头、请求和响应都存储在transport
对象中。问题是,除了可能是 cookiejar 中的 cookie 之外,这些活动都没有被缓存或存储在传输中,即使跟踪这些有时也会有问题。
如果您想查看调试时发生了什么,我的建议是将其添加到您的代码中:
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
Suds 使用本机logging
模块,因此通过打开调试日志记录,您可以看到在下面执行的所有活动,包括标头、变量、有效负载、URL 等。这为我节省了大量时间。
除此之外,如果您确实需要明确地跟踪标头上的状态,您将需要创建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)