まず、私の質問はこれに似ています
しかし、それは少し違います。私たちが持っているのは、一連の環境であり、同じサービス セットがあります。一部の環境 (ローカル環境) では、wsdl にアクセスできるため、suds クライアントを生成できます。外部環境の場合、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 'を持つメッセージは、EndpointDispatcher での ContractFilter の不一致により、受信側で処理できません。これは、コントラクトの不一致 (送信者と受信者の間のアクションの不一致) または送信者と受信者の間のバインディング/セキュリティの不一致が原因である可能性があります。送信者と受信者が同じコントラクトと同じバインド (メッセージ、トランスポート、なしなどのセキュリティ要件を含む) を持っていることを確認します。
問題は、クライアントをホストに直接設定すると、正常に動作することです: client = suds.client.Client(host)
ご覧のとおり、クライアントのクローンを作成しようとしましたが、同じ例外があります。私もこれを試しました:
baseclient = suds.client.Client(host)
client = baseclient.clone()
client.options.location = otherhost
....
そして同じ例外を得ました。
誰でも私を助けることができますか?