From: "AleiPhoenix (A.K.A Areverie)" Date: 2012-12-18T14:46:50+09:00 Subject: Re: net/http post request with nested hash data ? --bcaec54b4aa00d0f7604d119f186 Content-Type: text/plain; charset=UTF-8 Got it, thanks. On Mon, Dec 17, 2012 at 6:20 AM, Eric Hodel wrote: > On Dec 16, 2012, at 6:53 AM, "AleiPhoenix (A.K.A Areverie)" < > aleiphoenix@gmail.com> wrote: > > I'm currently working on a script doing login function with a website. > > > > The login action requires a hash-like parameters as > > > > login[account] = "foobar@example.com" > > login[passwd] = "whatever" > > > > setting params in net/http like > > > > require "net/http" > > require "net/https" > > > > https = Net::HTTP.new("passport.115.com", 443) > > https.use_ssl = true > > req = Net::HTTP::Post.new("/?ac=login") > > Net::HTTPRequest#[] sets request headers, not form data. > > > req["login[account]"] = "foobar@example.com" > > req["login[passwd]"] = "whatever" > > res = https.request(req) > > > > p res.to_hash > > > > won't work, looks like the params weren't passed properly. > > > > and with > > This is not how the web browser is set up to send the parameters. > > > req.set_form_data({"login" => {"account" => "foobar@example.com", > "login" => "passwd"}}) > > > > has no luck either. > > This is how the web browser sends the parameters. > > > but with > > > > req.set_form_data({"login[account]" => "foobar@example.com", > "login[passwd]" => "whatever"}) > > > > doing the job. > > > > Any ideas? > > Use this last one. > -- Silence is golden. twitter: @areverie wikipedia: AleiPhoenix blog: weblog.areverie.org wiki: wiki.areverie.org --bcaec54b4aa00d0f7604d119f186 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Got it, thanks.


On Mon, Dec 17, 2012 at 6:20 AM, Eric Hodel <d= rbrain@segment7.net> wrote:
On Dec 16, 2012, at 6:53 A= M, "AleiPhoenix (A.K.A Areverie)" <aleiphoenix@gmail.com> wrote:
> I'm currently working on a script doing login function with a webs= ite.
>
> The login action requires a hash-like parameters as
>
> login[account] =3D "foobar@= example.com"
> login[passwd] =3D "whatever"
>
> setting params in net/http like
>
> require "net/http"
> require "net/https"
>
> https =3D Net::HTTP.new("passport.115.com", 443)
> https.use_ssl =3D true
> req =3D Net::HTTP::Post.new("/?ac=3Dlogin")

Net::HTTPRequest#[] sets request headers, not form data.

> req["login[account]"] =3D "foobar@example.com"
> req["login[passwd]"] =3D "whatever"
> res =3D https.request(req)
>
> p res.to_hash
>
> won't work, looks like the params weren't passed properly.
>
> and with

This is not how the web browser is set up to send the parameters.

> req.set_form_data({"login" =3D> {"account" =3D&= gt; "foobar@example.com"= ;, "login" =3D> "passwd"}})
>
> has no luck either.

This is how the web browser sends the parameters.

> but with
>
> req.set_form_data({"login[account]" =3D> "foobar@example.com", "login[passw= d]" =3D> "whatever"})
>
> doing the job.
>
> Any ideas?

Use this last one.



--
Silence is g= olden.

twitter: @areverie
wikipedia: AleiPhoenix
blog: weblog.areverie.org wiki: wiki.areverie.= org


--bcaec54b4aa00d0f7604d119f186--