diff --git a/suds/bindings/binding.py b/suds/bindings/binding.py
index 4af184cc..ad911f49 100644
--- a/suds/bindings/binding.py
+++ b/suds/bindings/binding.py
@@ -36,6 +36,7 @@
envns = ("SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/")
+envns12 = ("SOAP-ENV", "http://www.w3.org/2003/05/soap-envelope")
class Binding(object):
@@ -146,8 +147,12 @@ def get_reply(self, method, replyroot):
"""
soapenv = replyroot.getChild("Envelope", envns)
+ if not soapenv:
+ soapenv = replyroot.getChild("Envelope", envns12)
soapenv.promotePrefixes()
soapbody = soapenv.getChild("Body", envns)
+ if not soapbody:
+ soapbody = soapenv.getChild("Body", envns12)
soapbody = self.multiref.process(soapbody)
nodes = self.replycontent(method, soapbody)
rtypes = self.returned_types(method)
diff --git a/tests/test_reply_handling.py b/tests/test_reply_handling.py
index fc467869..83820b3d 100644
--- a/tests/test_reply_handling.py
+++ b/tests/test_reply_handling.py
@@ -481,6 +481,28 @@ def test_wrapped_sequence_output():
assert response.result3.__class__ is suds.sax.text.Text
+def test_soap12_envns():
+ # Prepare web service proxies.
+ client_bare = testutils.client_from_wsdl(testutils.wsdl("""\
+ """,
+ output="fResponse"))
+
+ assert not _isOutputWrapped(client_bare, "f")
+
+ data = "The meaning of life."
+ def get_response(client, x):
+ return client.service.f(__inject=dict(reply=suds.byte_str(x)))
+ # Envelope namespace URI is SOAP 1.2
+ response_bare = get_response(client_bare, """
+
+
+ %s
+
+""" % (data,))
+ assert response_bare.__class__ is suds.sax.text.Text
+ assert response_bare == data
+
+
def _attributes(object):
result = set()
for x in object: