From 17fcc19b19bdccaa613021c50900ecfab18fb7d9 Mon Sep 17 00:00:00 2001 From: Cristian Libotean Date: Fri, 5 Aug 2022 11:01:08 +0300 Subject: [PATCH] Allow Ws Addressing plugin to use a different URL address than the binding address. Some SOAP services require you to connect to a gateway server but specify your actual url in the addressing part. With this change you can override the binding address if you want to, but by default it will use the same address. --- src/zeep/wsa.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/zeep/wsa.py b/src/zeep/wsa.py index 3778bc31a..7f49b79d6 100644 --- a/src/zeep/wsa.py +++ b/src/zeep/wsa.py @@ -13,6 +13,9 @@ class WsAddressingPlugin(Plugin): nsmap = {"wsa": ns.WSA} + def __init__(self, address_url: str = None): + self.address_url = address_url + def egress(self, envelope, http_headers, operation, binding_options): """Apply the ws-addressing headers to the given envelope.""" @@ -24,7 +27,7 @@ def egress(self, envelope, http_headers, operation, binding_options): headers = [ WSA.Action(wsa_action), WSA.MessageID("urn:uuid:" + str(uuid.uuid4())), - WSA.To(binding_options["address"]), + WSA.To(self.address_url or binding_options["address"]), ] header.extend(headers)