2013-04-24 74 views
1

我正在使用SOAP服務,其中項目提供了一個外部WSDL文件。我正在使用Python + Suds連接到服務。我遇到的問題,因爲(HTTPS)服務的URL看起來像:有沒有辦法提供外部WSDL文件到Python Suds客戶端

/sipxconfig /服務/ UserService WSDL

但WSDL ATH該URL不匹配由該所提供的外部WSDL文件?項目。返回的SOAP文檔確實與匹配外部WSDL文件。所以我的肥皂水客戶提出了一個錯誤。

我到目前爲止通過編寫一個泡沫插件來「糾正」返回的SOAP XML,以便它與動態創建的WSDL(在URL)相匹配,從而解決了這個問題。但是,我希望有一種方法可以向subs客戶端提供外部WSDL文件,然後將其切換爲使用該服務的URL。

我想是這樣的:

但它最終導致MethodNotFound例外。 我在另一個終端上運行netstat,我可以看到客戶端沒有與外部服務建立網絡連接。

是否有其他人設法從文件中提供Suds WSDL?

感謝, 卡爾

+0

構建客戶端時,您還可以設置位置選項:'客戶端(...,位置= URL)'。感謝這個例子。 – deltab 2013-10-11 11:20:38

回答

1

所以我確定我是正確的軌道上,但我的SOAP服務有多個端口。我需要做到以下幾點:

wsdl_file = os.path.abspath(args.wsdl_file) 
client = Client("file://%s" % wsdl_file, transport=t, username=sip_user, password=sip_pwd, doctor=doctor) 
client.set_options(location=url) 

#Get the results. 
user_search = client.factory.create("UserSearch") 
user_search.byUserName = args.find_user 
user_search.byFuzzyUserNameOrAlias = args.fuzzy 
user_search.byGroup = args.group 

result = client.service['UserService'].findUser(user_search) 
#      ^^^^^^^^^^^^^^^ 
# This was the missing bit that threw me off! 

感謝, 卡爾

相關問題