1

perl SOAP クライアントを Python SOAP クライアントに変換したいと考えています。perl クライアントは次のように初期化されます

$url = 'https://host:port/cgi-devel/Service.cgi';
$uri = 'https://host/Service';

my $soap = SOAP::Lite 
    -> uri($uri)
    -> proxy($url);

これをpython 2.4.2で再現しようとしましたが、suds 0.3.6で実行しました

from suds.client import Client

url="https://host:port/cgi-devel/Service.cgi" 
client=Client(url)

ただし、このpythonスクリプトを実行するとエラーが発生します

suds.transport.TransportError: HTTP Error 411: Length Required

httpsが原因ですか、それとも何が問題なのですか? どんな助けでも大歓迎です!

4

3 に答える 3

3

urllib2Requestオブジェクトが手動で作成される場合、モジュールはContent-Length(POSTメソッドに必要)ヘッダーを自動的に追加しませんsudssuds.transport.HttpTransport.open()おそらくメソッドまたはsuds.transport.Requestクラスのsudにパッチを適用する必要があります。

于 2009-09-25T16:37:34.520 に答える
3

同じエラーが発生した後、ローカルのWSDLファイルを使用するように切り替えました。これは機能しました。

import suds
wsdl = 'file:///tmp/my.wsdl'
client = suds.client.Client(wsdl, username='lbuser', password='lbpass', location='https://path.to.our.loadbalancer:9090/soap')
于 2010-08-19T08:11:29.670 に答える
0

suds のメーリング リストで質問してください。このライブラリは開発中であり、オープン ソースであり、作成者はユーザーからのフィードバックを非常に熱心に求めています。

あなたのコードは問題ないように見えますが、これは wsdl 自体または suds ライブラリのエラーである可能性があります。したがって、作成者に直接問い合わせることをお勧めします (インストールが正しいことを他の wsdl で確認した後)。

于 2009-09-25T13:06:35.493 に答える