How to add http headers in suds 0.3.6?

霸气de小男生 提交于 2019-11-30 20:39:45

At least in suds 0.4 (maybe earlier?) HTTP headers can also be passed in to the constructor or via the set_options method:

client = suds.client.Client(url, headers={'key': 'value'})
client.set_options(headers={'key2': 'value'})

When you create the opener in urllib2, you can use some handlers to do whatever you want. For example, if you want to add a new header in suds, you should do something like this:

https = suds.transport.https.HttpTransport()
opener = urllib2.build_opener(HTTPSudsPreprocessor)
https.urlopener = opener
suds.client.Client(URL, transport = https)

where HTTPSudsPreprocessor is your own handler, and it should look like this:

class HTTPSudsPreprocessor(urllib2.BaseHandler):

    def http_request(self, req):
        req.add_header('Content-Type', 'text/xml; charset=utf-8')
        return req

    https_request = http_request

The methods you have to override depend on what you want to do. See urllib2 documentation in Python.org

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!