6

私は、sud0.3.6を介してデータを送信するPython2.5のアプリケーションを持っています。

問題は、データにASCII以外の文字が含まれているため、soapメッセージに次のヘッダーが存在する必要があることです。

Content-Type = "text / html; charset =" utf-8 "

そして、SOAPメッセージに存在するヘッダーは次のとおりです。

Content-Type = "text / html"

suds 0.4で修正されていることは知っていますが、CentOSを使用していて、そのバージョンが必要なため、Python2.6が必要です。Python2.5が必要です。したがって、問題は次のとおりです。

SOAPメッセージに新しいHTTPヘッダーを変更または追加するにはどうすればよいですか?

4

2 に答える 2

13

少なくともsuds0.4(おそらくそれ以前?)では、HTTPヘッダーをコンストラクターに渡すことも、set_optionsメソッドを介して渡すこともできます。

client = suds.client.Client(url, headers={'key': 'value'})
client.set_options(headers={'key2': 'value'})
于 2011-09-28T20:57:22.220 に答える
4

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 ドキュメントを参照してください。

于 2010-05-19T09:32:32.517 に答える