Ändern Sie die Web-Service-URL für einen Suds-Client zur Laufzeit (wobei die WSDL beibehalten wird)

8

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?

    
patanpatan 14.05.2010, 17:42
quelle

3 Antworten

4
%Vor%

... 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.

    
anthonyrisinger 13.02.2013 20:53
quelle
3

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.

    
patanpatan 17.05.2010 20:46
quelle
0

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.

    
jathanism 14.05.2010 19:25
quelle

Tags und Links