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);

我试图用 suds 0.3.6 在 python 2.4.2 中复制它

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

urllib2当手动构造请求对象时,模块不会自动添加 Content-Length(POST 方法所需)标头suds。您必须修补泡沫,可能是suds.transport.HttpTransport.open()方法或suds.transport.Request类。

于 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 回答