2009-09-25 82 views
1

我想將perl SOAP客戶端轉換爲python SOAP客戶端。 Perl的客戶端一樣用肥皂水編寫用於SOAP的python客戶端

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

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

初始化我試圖複製這個在Python 2.4.2用肥皂水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

我開了一個關於在泡沫問題票網頁前一段時間(見https://開頭fedorahosted。 org/suds/ticket/259),但到目前爲止沒有迴應。由於我在我的項目中不再使用SOAP,因此這個問題對我來說已經過時了。 – asmaier 2009-12-15 19:35:03

回答

0

你應該在發泡郵件列表中提問。這個庫正在開發中,是開源的,作者非常熱衷於從用戶那裏獲得反饋。

你的代碼看起來很好,這可能是wsdl本身或者suds庫的錯誤,因此我鼓勵你直接詢問作者(在檢查了其他wsdls之後,你的安裝是否正確)。

3

urllib2當Request對象被手動構造爲suds時,模塊不會自動添加Content-Length(POST方法所需的)標頭。你必須補丁泡沫,可能suds.transport.HttpTransport.open()方法或suds.transport.Request類。

+0

根據你的提示,我實際上設法擺脫了錯誤信息。但我仍然無法連接到服務器。後來很清楚,我可以用另一種非常簡單的方法來連接到服務器,而不是使用SOAP。所以我不再使用SOAP,因此這個問題對我來說已經過時了。 – asmaier 2009-12-15 19:40:53

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