如何在sud0.3.6中添加http头?

2024-04-19 21:56:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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头?


Tags: 数据text应用程序消息内容htmltypeascii
2条回答

至少在肥皂水0.4(可能更早?)HTTP头也可以传入构造函数或通过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文档

相关问题 更多 >