Zunächst einmal ist meine Frage ähnlich wie diese
Aber es ist ein bisschen anders. Was wir haben, ist eine Reihe von Umgebungen mit den gleichen Diensten. Für einige Umgebungen (die lokalen) können wir Zugriff auf die WSDL erhalten und somit den Sudden-Client generieren. Für eine externe Umgebung können wir nicht auf die WSDL zugreifen. Aber da ich das gleiche bin, habe ich gehofft, dass ich nur die URL ändern kann, ohne den Client neu zu erstellen. Ich habe versucht, den Client zu klonen, aber es funktioniert nicht.
Bearbeiten: Code hinzufügen:
%Vor%Das gibt mir diese Ausnahme:
Die Nachricht mit Action ' Ссылка kann aufgrund eines ContractFilter-Mismatch am EndpointDispatcher nicht am Empfänger verarbeitet werden. Dies kann entweder auf eine Vertragsfehlanpassung (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder auf eine Bindungs- / Sicherheitskonflikt zwischen dem Absender und dem Empfänger zurückzuführen sein. Überprüfen Sie, ob Absender und Empfänger den gleichen Vertrag und die gleiche Bindung haben (einschließlich Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine).
Die Sache ist, wenn ich den Client direkt auf den Host setze, funktioniert es gut: Client = suds.client.Client (Host)
Wie Sie sehen, habe ich versucht, den Client zu klonen, aber mit derselben Ausnahme. Ich habe es sogar versucht:
%Vor%Und habe die selbe Ausnahme.
Kann mir jemand helfen?
... ist der "manuelle" Weg, d. pro Service-Beschreibung .
%Vor%... sollte auch funktionieren für den Autor .
options
ist ein umgebrochenes / geschütztes attr - direkte Änderungen können sehr gut ignoriert werden.
Ich habe es! Ich weiß nicht einmal, wie ich es herausgefunden habe, aber mit ein wenig Rat und viel Glück habe ich damit Schluss gemacht:
%Vor%Und es funktioniert! Ich kann keine Dokumentation über diese Eigenschaft finden (client.wsdl.url), aber es funktioniert, also poste ich es, falls jemand das gleiche Problem hat.
Sie können dies möglicherweise tun, indem Sie location
des Service angeben. Angenommen, Sie haben ein Client
-Objekt namens client
, können Sie den Service-Standort ändern, indem Sie die URL in client.options.location
aktualisieren.
Zusätzlich können Sie eine lokale Kopie einer WSDL-Datei als url
verwenden, wenn Sie den Client mithilfe eines file://
-Schemas für die URL erstellen, z. %Code%. Das könnte also eine andere Option für Sie sein. Natürlich müssten Sie auch file:///path/to/service.wsdl
angeben, damit der Standardspeicherort innerhalb der WSDL außer Kraft gesetzt wird.