2014-02-05 27 views
3

我必须使用具有多个服务的API。所有这些都需要下面认证的JSESSION cookie。但是,当我调用下一个服务时,它不保存cookie并拒绝它们。从SUDS中的SOAP响应中提取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文档,URL2LIB和Cookiejar python文档,查看了在Reddit上查询堆栈&。这是我在Stack上提出的第一个问题,我试图让它变得有意义和具体,但是如果我已经提交了一个人造标签,告诉我,我会尽我所能来纠正它。

回答

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