SOAP,Python,suds

问题描述 投票:6回答:3

[请告知库,以在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。

python soap suds
3个回答
4
投票

我认为您实际上是想在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菜鸟。但这就是我的直觉告诉我的。


4
投票

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

0
投票

我认为Suds库的文档很差,所以我建议您使用Client。它是Python中的SOAP请求库。它的文档并不完美,但是比Suds Doc非常清晰。

© www.soinside.com 2019 - 2024. All rights reserved.