我想将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或可能是什么问题? 任何帮助将不胜感激!
答案 0 :(得分:3)
urllib2
手动构造Request对象时, suds
模块不会自动添加Content-Length(POST方法所需)头。您必须修补suds,可能是suds.transport.HttpTransport.open()
方法或suds.transport.Request
类。
答案 1 :(得分: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')
答案 2 :(得分:0)
你应该在suds的邮件列表中问这个问题。该库正在开发中,是开源的,作者非常希望从用户那里获得反馈。
您的代码看起来很好,这可能是wsdl本身或suds库的错误,因此我建议您直接询问作者(在与其他wsdl检查过您的安装是否正确之后)。