HTTPTransport をオーバーライドして SOAPpy に Cookie サポートを追加しました。SOAPpy を超える機能が必要なので、ZSI に移行する予定でしたが、サービスに対して作成された ZSI 投稿に Cookie を配置する方法がわかりません。これらの Cookie がないと、サーバーはそれが不正な要求であると判断し、失敗します。
Python CookieJar から ZSI リクエストに Cookie を追加するにはどうすればよいですか?
HTTPTransport をオーバーライドして SOAPpy に Cookie サポートを追加しました。SOAPpy を超える機能が必要なので、ZSI に移行する予定でしたが、サービスに対して作成された ZSI 投稿に Cookie を配置する方法がわかりません。これらの Cookie がないと、サーバーはそれが不正な要求であると判断し、失敗します。
Python CookieJar から ZSI リクエストに Cookie を追加するにはどうすればよいですか?
ZSIのclient.pyの_Bindingクラスを読み取ると、Cookie.SimpleCookieのインスタンスである変数cookieが含まれていることがわかります。ZSIの例とCookieの例に従って、次のように機能します。
b = Binding(url='/cgi-bin/simple-test', tracefile=fp)
b.cookies['foo'] = 'bar'
さらに、Binding クラスでは、任意のヘッダーを追加することもできます。そのため、追加する必要がある各 Cookie に「Cookie」ヘッダーを追加するだけでよいことがわかりました。これは、SOAP クライアント クラスでバインディングが形成された直後に Cookie を追加するだけで、wsdl2py によって生成されたコードでうまく機能しました。生成されたクラスにパラメーターを追加して、Cookie をディクショナリとして取り込むのは簡単で、簡単に反復して追加することができます。