如何在suds 0.3.6中添加http标头?
问题内容:
我在python 2.5中有一个通过suds 0.3.6发送数据的应用程序。
问题是数据包含非ASCII字符,因此我需要以下头在soap消息中存在:
Content-Type =“ text / html; charset =” utf-8“
SOAP消息中存在的标头就是:
Content-Type =“ text / html”
我知道它在suds 0.4中已修复,但是它需要Python2.6,并且我需要Python2.5,因为我使用的是CentOS,并且需要该版本。所以问题是:
如何更改或向SOAP消息添加新的HTTP标头?
问题答案:
在urllib2中创建打开程序时,可以使用一些处理程序来执行所需的任何操作。例如,如果要在suds中添加新的标头,则应执行以下操作:
https = suds.transport.https.HttpTransport()
opener = urllib2.build_opener(HTTPSudsPreprocessor)
https.urlopener = opener
suds.client.Client(URL, transport = https)
HTTPSudsPreprocessor是您自己的处理程序,它应如下所示:
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
您必须重写的方法取决于您要执行的操作。请参阅Python.org中的urllib2文档