Posting a form from Rails programatically

How would I go about creating and posting a form POST request from
inside some Rails code?
The use case I have is that I have received a form request, and I
would like to forward this request on to a third party with my
parameters intact.

I should add that I want to redirect the user out to the third party
with the form too. Essentially I want it to appear to the user that
they’ve submitted the form to the third party directly.

Neil M. wrote:

How would I go about creating and posting a form POST request from
inside some Rails code?
The use case I have is that I have received a form request, and I
would like to forward this request on to a third party with my
parameters intact.

I should add that I want to redirect the user out to the third party
with the form too. Essentially I want it to appear to the user that
they’ve submitted the form to the third party directly.

Check out mechanize:

http://mechanize.rubyforge.org/mechanize/GUIDE_rdoc.html

7stud – wrote:

I should add that I want to redirect the user

whoops.

I should add that I want to redirect the user out to the third party
with the form too. Essentially I want it to appear to the user that
they’ve submitted the form to the third party directly.

You can either use an HTTP 307 response (HTTP - Hypertext Transfer Protocol Overview
rfc2616/rfc2616-sec10.html#sec10.3.8) which, according to the
standard, should re-send the original request to the given location
(keeping the original method and data), but browsers require
confirmation from the user (most browsers - an unfriendly dialog),
some browser-specific quirks may occur as well. Except from this,
that’s the ‘standard’ method for your use case.

You can also use any Ruby HTTP client to send the request from your
server, wait for the response, and, basing on it, send your response
(maybe a redirect) to the client. This solution is more complicated to
implement, and if it’s a non-trivial third party form, some issues
with cookies/sessions may appear.

Keep us updated on your progress.


Bye,
Olek

I’ve tried a 307, which seems to work with Firefox (with a warning, as
you say), but Safari (4) seems to miss the re-post. I’ve not checked
IE, as I’ve not got a copy to hand.

Neil