2024-04-19 21:56:57 发布
网友
我有一个python 2.5中的应用程序,它通过sud0.3.6发送数据。
问题是数据包含非ascii字符,因此我需要soap消息中存在以下头:
Content Type=“text/html;charset=“utf-8”
SOAP消息中存在的头是:
内容类型=“文本/html”
我知道它在sud0.4中是固定的,但是它需要Python2.6,我需要Python2.5,因为我使用CentOS,它需要那个版本。所以问题是:
如何更改或向SOAP消息添加新的HTTP头?
至少在肥皂水0.4(可能更早?)HTTP头也可以传入构造函数或通过set_options方法:
set_options
client = suds.client.Client(url, headers={'key': 'value'}) client.set_options(headers={'key2': 'value'})
当您在urllib2中创建opener时,可以使用一些处理程序来执行您想要的任何操作。例如,如果要在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文档
至少在肥皂水0.4(可能更早?)HTTP头也可以传入构造函数或通过
set_options
方法:当您在urllib2中创建opener时,可以使用一些处理程序来执行您想要的任何操作。例如,如果要在suds中添加新的头,则应执行以下操作:
其中HTTPSudsPreprocessor是您自己的处理程序,它应该如下所示:
必须重写的方法取决于要执行的操作。参见Python.org中的urllib2文档
相关问题 更多 >
编程相关推荐