首先,我的問題是類似this one更改Web服務URL(保持WSDL)所有的
但它是一個有點不同。 我們擁有的是一系列具有相同服務的環境。 對於某些環境(本地環境),我們可以訪問wsdl,從而生成泡沫客戶端。 對於外部環境,我們無法訪問wsdl。但是同樣的,我希望我可以更改URL而無需重新生成客戶端。 我試過克隆客戶端,但它不起作用。
編輯:添加代碼:
host='http://.../MyService.svc'
wsdl_file = 'file://..../wsdl/MyService.wsdl'
client = suds.client.Client(wsdl_file, location=host, cache=None)
#client = baseclient.clone()
#client.options.location = otherhost
client.set_options(port='BasicHttpBinding_IMyService')
result = client.service.IsHealthy()
這給了我這樣的例外:
與行動「http://tempuri.org/IMyService/IsHealthy」不能在接收器進行處理,該消息由於在一個ContractFilter不匹配EndpointDispatcher。這可能是因爲合同不匹配(發件人和收件人之間的操作不匹配)或發件人和收件人之間的綁定/安全性不匹配。檢查發送方和接收方是否有相同的合同和相同的綁定(包括安全要求,例如消息,傳輸,無)。
的事情是,如果我直接設置客戶端主機,它工作正常: 客戶端= suds.client.Client(主機)
正如你所看到的,我已經試過克隆客戶端,但具有相同的例外。我甚至試過這個:
baseclient = suds.client.Client(host)
client = baseclient.clone()
client.options.location = otherhost
....
並得到了同樣的例外。
任何人都可以幫到我嗎?
我已經嘗試了很多東西,但我不明白我在做什麼錯。 我將添加一些代碼,原來的問題,這將是巨大的,如果你可以檢查它 – patanpatan 2010-05-17 15:44:07
我的問題是,服務提供商給您的文件。對於測試模式,您必須使用測試網址手動修改wsdl文件。我想在加載文件並更新服務地址位置之後動態地進行更改。我不認爲這是可能的。 – radtek 2015-12-15 16:43:30