从SUDS中的SOAP响应中提取Cookie

时间:2014-02-05 20:16:24

标签: python api soap suds

我必须使用具有多种服务的API。所有这些都需要来自下面的身份验证的JSESSION cookie。然而,当我调用下一个服务时,它不会保留cookie,因此拒绝它们。

from suds.client import Client
url = 'http://example/ws/Authenticate?wsdl'
client = Client(url)
result = client.service.connect(username='admin', password='admin')
print client.options.transport.cookiejar

>>> <cookielib.CookieJar[<Cookie JSESSIONID=XXXXXXXXXX for localhost.local/Service/>]>

我认为让它保留这个cookie的方法是提取它,然后以格式提供它作为自定义标题: -

url = 'http://example/ws/dostuffnowloggedin?wsdl' 
client2 = Client(url, headers= { 'Cookie': 'JSESSIONID=value'})

但我无法弄明白该怎么做。我查看了SUDS Docs,URL2LIB和Cookiejar python文档,查看了堆栈和文件。在Reddit上问道。这是我在Stack上提出的第一个问题,我试图让它变得有意义和具体,但如果我提出了一个虚假的标准,请告诉我,我会尽力纠正它。

1 个答案:

答案 0 :(得分:0)

试试这个。

from suds.client import Client
url = 'http://example/ws/Authenticate?wsdl'
client = Client(url)
result = client.service.connect(username='admin', password='admin')
url2='url of second service'
client2=Client(url2)
client2.options.transport.cookiejar=client.options.transport.cookiejar