Skip to Content
Menu
This question has been flagged
1 Reply
20106 Views

I need to redirect Odoo to an external website via http POST request.

Is this possible?

I can´t find any examples for it.

ir.actions.act_url only works for http GET.

Any ideas? 

Avatar
Discard
Best Answer

By default, all links clicked through a browser are GET requests.  In order for a browser to send a POST request, you'll need to create custom JavaScript to POST the data to the URL.

You could also create a custom web controller to receive the GET request locally, and then issue the POST request in python to the external URL.  

Avatar
Discard
Author

Thanks. I´m trying with the web controller but I can´t issue the POST request in python. How do you change the request method to POST and redirect to it? @http.route('/redirect_post', type='http', auth="none", methods=['GET']) def redirect_post(self, **post): cr, uid, context = request.cr, request.uid, request.context #redirect to an external url changing to POST and adding parameters

Here's an example using HTTP for Humans (http://docs.python-requests.org/)

import requests
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload)

On Tue, Jul 7, 2015 at 11:16 AM, Martin Varela <martin_varela85-hotmail.com@mail.odoo.com> wrote:

Thanks. I´m trying with the web controller but I can´t issue the POST request in python. How do you change the request method to POST and redirect to it? @http.route('/redirect_post', type='http', auth="none", methods=['GET']) def redirect_post(self, **post): cr, uid, context = request.cr, request.uid, request.context #redirect to an external url changing to POST and adding parameters

--
Martin Varela
Sent by Odoo Inc. using Odoo access your messages

Author

I've tried that, but when I return de request "r" raises a warning and then an error: WARNING openerp.http: returns an invalid response type for an http request ERROR werkzeug: Error on request: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 177, in run_wsgi execute(self.server.app) File "/usr/lib/python2.7/site-packages/werkzeug/serving.py", line 165, in execute application_iter = app(environ, start_response) File "/usr/lib/python2.7/site-packages/openerp/service/server.py", line 281, in app return self.app(e, s) File "/usr/lib/python2.7/site-packages/openerp/service/wsgi_server.py", line 216, in application return application_unproxied(environ, start_response) File "/usr/lib/python2.7/site-packages/openerp/service/wsgi_server.py", line 202, in application_unproxied result = handler(environ, start_response) File "/usr/lib/python2.7/site-packages/openerp/http.py", line 1215, in __call__ return self.dispatch(environ, start_response) File "/usr/lib/python2.7/site-packages/openerp/http.py", line 1189, in __call__ return self.app(environ, start_wrapped) File "/usr/lib/python2.7/site-packages/werkzeug/wsgi.py", line 579, in __call__ return self.app(environ, start_response) File "/usr/lib/python2.7/site-packages/openerp/http.py", line 1362, in dispatch return response(environ, start_response) TypeError: 'Response' object is not callable

Related Posts Replies Views Activity
2
Sep 22
5157
4
Dec 23
22438
2
Apr 16
3297
0
Jun 24
682
1
Jun 24
425