Post_form not posting to full url

I am using Net::HTTP.post_form to post this form information:
{ “form_action” => “pet.do_fight”, “mcid” => “9”, “level” => “30”,
“type” => “fightmonster” }
to this url:
http://neo2.hotornot.com/facebook/pet/?fb_sig_in_iframe=1&fb_sig_time=1183152280.7875&fb_sig_user=502275480&fb_sig_profile_update_time=1182829280&fb_sig_session_key=4ca41050eb103deabc95c2c5-502275480&fb_sig_expires=0&fb_sig_api_key=692cc73d766279a46f0aaac1d104771e&fb_sig_added=1&fb_sig=c9a69599141dd3a1f4b81f46fc52ffb2&cpid=560252&msg=
and while it should be posting to this url when I used a packet sniffer
(because it was not working) it showed me that it was posting only to
this url:
http://neo2.hotornot.com/facebook/pet/
it gives me a 404:

.msg404 { font-family:Arial,sans-serif; font-size:24px; text-align:center; }

Sorry! This page cannot be found

as well as giving me:
#Net::HTTPNotFound:0x2b65600
…what am i doing wrong:

require ‘net/http’
require ‘uri’
spooform = { “form_action” => “pet.do_fight”, “mcid” => “9”, “level” =>
“30”, “type” => “fightmonster” }
fightit =
http://neo2.hotornot.com/facebook/pet/?fb_sig_in_iframe=1&fb_sig_time=1183152280.7875&fb_sig_user=502275480&fb_sig_profile_update_time=1182829280&fb_sig_session_key=4ca41050eb103deabc95c2c5-502275480&fb_sig_expires=0&fb_sig_api_key=692cc73d766279a46f0aaac1d104771e&fb_sig_added=1&fb_sig=c9a69599141dd3a1f4b81f46fc52ffb2&cpid=560252&msg=
responce = Net::HTTP.post_form(URI.parse(fightit),spooform)
puts responce

On 6/30/07, Pat G. [email protected] wrote:

require ‘net/http’
require ‘uri’
spooform = { “form_action” => “pet.do_fight”, “mcid” => “9”, “level” =>
“30”, “type” => “fightmonster” }
fightit =
http://neo2.hotornot.com/facebook/pet/?fb_sig_in_iframe=1&fb_sig_time=1183152280.7875&fb_sig_user=502275480&fb_sig_profile_update_time=1182829280&fb_sig_session_key=4ca41050eb103deabc95c2c5-502275480&fb_sig_expires=0&fb_sig_api_key=692cc73d766279a46f0aaac1d104771e&fb_sig_added=1&fb_sig=c9a69599141dd3a1f4b81f46fc52ffb2&cpid=560252&msg=
responce = Net::HTTP.post_form(URI.parse(fightit),spooform)
puts responce

this source for post_form (copied from ruby-doc.org):

def HTTP.post_form(url, params)
req = Post.new(url.path)
req.form_data = params
req.basic_auth url.user, url.password if url.user
new(url.host, url.port).start {|http|
http.request(req)
}
end

You can see that it doesn’t send Uri#query.

Try either joining the GET parameters with POST ones, and send them
all as POST params, or use Http#post and specify the path and query
string.

uri = URI.parse(‘http://…’)
i.e. Http.open(uri.host) do |http|
response = http.post(uri.path + ‘?’ + uri.query, )
end

you’d need to find out how to encode the form data.

Disclaimer: It’s 1AM here, I have not tested anything, so take these
as ideas to investigate…

J.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs