diff --git a/src/zeep/transports.py b/src/zeep/transports.py index 99e28bb8..dd97703c 100644 --- a/src/zeep/transports.py +++ b/src/zeep/transports.py @@ -67,7 +67,7 @@ def get(self, address, params, headers): ) return response - def post(self, address, message, headers): + def post(self, address, message, headers, params={}): """Proxy to requests.posts() :param address: The URL for the request @@ -82,7 +82,7 @@ def post(self, address, message, headers): self.logger.debug("HTTP Post to %s:\n%s", address, log_message) response = self.session.post( - address, data=message, headers=headers, timeout=self.operation_timeout + address, data=message, headers=headers, timeout=self.operation_timeout, params=params ) if self.logger.isEnabledFor(logging.DEBUG): @@ -106,7 +106,7 @@ def post(self, address, message, headers): return response - def post_xml(self, address, envelope, headers): + def post_xml(self, address, envelope, headers, params={}): """Post the envelope xml element to the given address with the headers. This method is intended to be overriden if you want to customize the @@ -115,7 +115,7 @@ def post_xml(self, address, envelope, headers): """ message = etree_to_string(envelope) - return self.post(address, message, headers) + return self.post(address, message, headers, params) def load(self, url): """Load the content from the given URL""" diff --git a/tests/test_transports.py b/tests/test_transports.py index ce8ad193..b70af027 100644 --- a/tests/test_transports.py +++ b/tests/test_transports.py @@ -7,6 +7,7 @@ from zeep import cache, transports +from lxml import etree as ET @pytest.mark.requests def test_no_cache(): @@ -73,3 +74,18 @@ def test_settings_set_context_timeout(): assert transport.operation_timeout == 90 assert transport.operation_timeout == 120 assert transport.operation_timeout is None + +def test_post_with_params(): + transport = transports.Transport() + with requests_mock.mock() as m: + m.post("http://tests.python-zeep.org/test.xml?param_x=value_x", text="responseBody") + result = transport.post("http://tests.python-zeep.org/test.xml", message="requestBody", headers={}, params={"param_x": "value_x"}) + assert result.text == "responseBody" + +def test_post_xml_with_params(): + transport = transports.Transport() + with requests_mock.mock() as m: + m.post("http://tests.python-zeep.org/test.xml?param_x=value_x", text="responseBody") + envelope = ET.Element("a") + result = transport.post_xml("http://tests.python-zeep.org/test.xml", envelope=envelope, headers={}, params={"param_x": "value_x"}) + assert result.text == "responseBody" \ No newline at end of file