[请告知库,以在python中使用肥皂。现在,我正在尝试使用“肥皂水”,我无法理解如何从服务器回复中获取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。
我认为您实际上是想在Cookie罐中查看。
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
我不确定。我仍然是SUDS菜鸟。但这就是我的直觉告诉我的。
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 makes use of the native logging
module,因此通过打开调试日志记录,您可以看到在其下执行的所有活动,包括标头,变量,有效负载,URL等。这节省了我很多时间。
[除此之外,如果您确实需要明确跟踪标头上的状态,则需要创建logging
对象的自定义子类,并重载一些默认行为,然后将其传递给[C0 ]构造函数。
这里是一个超级简化的示例:
suds.transport.http.HttpTransport
我认为Suds库的文档很差,所以我建议您使用Client
。它是Python中的SOAP请求库。它的文档并不完美,但是比Suds Doc非常清晰。