为ZSI帖子添加Cookie
我在SOAPpy中添加了对cookie的支持,通过重写HTTPTransport来实现。不过我需要的功能比SOAPpy提供的更多,所以我打算转到ZSI,但我不知道怎么把cookie放到发给服务的ZSI请求中。如果没有这些cookie,服务器会认为这是一个未经授权的请求,然后就会失败。
我该如何把Python的CookieJar中的cookie添加到ZSI请求中呢?
2 个回答
0
另外,Binding类还允许添加任何头信息。所以我发现我可以为每个需要添加的cookie添加一个“Cookie”头信息。这在wsdl2py生成的代码中效果很好,只需在SOAP客户端类中创建绑定后,直接添加这些cookie即可。给生成的类添加一个参数,用来接收cookies作为字典也很简单,然后就可以轻松地遍历这些cookie并添加它们。
1
如果你查看一下ZSI中client.py文件里的_Binding类,你会发现里面有一个叫做cookies的变量,它是Cookie.SimpleCookie这个类的一个实例。根据ZSI的示例和Cookie的示例,它应该是这样工作的:
b = Binding(url='/cgi-bin/simple-test', tracefile=fp)
b.cookies['foo'] = 'bar'