Ishpeckからの応答は正しい道を進んでいます。Suds の内部構造についていくつか追加したかっただけです。
suds クライアントは、urllib2 HTTP オープナーの上にある巨大な抽象レイヤーです。HTTP クライアント、cookiejar、ヘッダー、リクエスト、およびレスポンスはすべてtransport
オブジェクトに格納されます。問題は、おそらく cookiejar 内の Cookie を除いて、このアクティビティがトランスポート内にキャッシュまたは保存されないことです。
デバッグ中に何が起こっているかを確認したい場合は、コードにこれを追加することをお勧めします。
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
Suds はネイティブlogging
モジュールを利用するため、デバッグ ログをオンにすることで、ヘッダー、変数、ペイロード、URL などを含む、その下で実行されているすべてのアクティビティを確認できます。これにより、多くの時間を節約できました。
それ以外で、ヘッダーの状態を確実に追跡する必要がある場合は、suds.transport.http.HttpTransport
オブジェクトのカスタム サブクラスを作成し、デフォルトの動作の一部をオーバーロードしてから、Client
コンストラクターに渡す必要があります。
以下は、非常に単純化された例です。
from suds.transport.http import HttpTransport, Reply, TransportError
from suds.client import Client
class MyTransport(HttpTransport):
# custom stuff done here
mytransport_instance = MyTransport()
myclient = Client(url, transport=mytransport_instance)