使用suds编写用于SOAP的python客户端

使用suds编写用于SOAP的python客户端,python,soap,https,suds,Python,Soap,Https,Suds,我想将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); 我尝试在Python2.4.2中用sud0.3.6复制它 from suds.client import C

我想将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);
我尝试在Python2.4.2中用sud0.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还是可能的问题?
任何帮助都将不胜感激

你应该在suds的邮件列表中询问这个问题。这个库正在开发中,是开源的,作者非常渴望从用户那里得到反馈


您的代码看起来不错,这可能是wsdl本身或suds库的错误,因此我建议您直接询问作者(在与其他wsdl检查您的安装是否正确后)。

您应该在suds的邮件列表中询问此问题。这个库正在开发中,是开源的,作者非常渴望从用户那里得到反馈


您的代码看起来不错,这可能是wsdl本身或suds库的错误,因此我建议您直接询问作者(在与其他wsdl检查您的安装是否正确后)。

urllib2
模块未添加内容长度(POST方法需要)当请求对象像
suds
那样手动构造时,会自动生成标头。您必须修补sud,可能是
suds.transport.HttpTransport.open()
方法或
suds.transport.Request
类。

urllib2
模块不会像
suds
那样在手动构造请求对象时自动添加内容长度(POST方法所需)头。您必须修补sud,可能是
suds.transport.HttpTransport.open()
方法或
suds.transport.Request
类。

我遇到了相同的错误,然后切换到使用本地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')

我也犯了同样的错误,然后切换到使用本地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')

不久前,我在suds的网页上打开了一张关于这个问题的罚单(参见),但到目前为止没有得到任何回应。由于我不再在项目中使用SOAP,这个问题对我来说已经过时了。不久前,我在suds网页上就这个问题开了一张罚单(参见),但到目前为止没有得到任何回应。由于我不再在项目中使用SOAP,这个问题对我来说已经过时了。根据你的提示,我实际上设法消除了错误消息。但我仍然无法连接到服务器。后来很明显,我可以使用另一种非常简单的方法来连接到所讨论的服务器,而不是SOAP。所以我不再使用SOAP了,所以这个问题对我来说已经过时了。根据你的提示,我实际上设法消除了错误消息。但我仍然无法连接到服务器。后来很明显,我可以使用另一种非常简单的方法来连接到所讨论的服务器,而不是SOAP。所以我不再使用SOAP了,所以这个问题对我来说已经过时了。