[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Net::HTTP - POST and GET in the same request

subsume@gmail.com

5/25/2007 8:15:00 PM

I have a peculiar problem where I need to submit POST data to a script
which has get variables (script.asp?variable=true)

But Net:HTTP seems to have gone to great lengths to prevent this.
Obviously, its messy and looked down upon but unfortunately I cannot
control this.

Running tests:

body =
Net::HTTP.post_form(URI.parse('http://www.server.net/post.ph...),
{'A'=>'1','B'=>'2','C' => '3'})

puts body.body

---------

Above, the POST variables are the only ones which hit the server.
Apparently everything after the '?' is totally ignored. Please help!

--
Posted via http://www.ruby-....

7 Answers

Enrique Comba Riepenhausen

5/25/2007 8:27:00 PM

0

On 25 May 2007, at 22:15, subsume@gmail.com wrote:

> I have a peculiar problem where I need to submit POST data to a script
> which has get variables (script.asp?variable=true)
>
> But Net:HTTP seems to have gone to great lengths to prevent this.
> Obviously, its messy and looked down upon but unfortunately I cannot
> control this.
>
> Running tests:
>
> body =
> Net::HTTP.post_form(URI.parse('http://www.server.net/post.ph...),
> {'A'=>'1','B'=>'2','C' => '3'})
>
> puts body.body
>
> ---------
>
> Above, the POST variables are the only ones which hit the server.
> Apparently everything after the '?' is totally ignored. Please help!
>
> --
> Posted via http://www.ruby-....
>

Try the following:

http = Net::HTTP.new('http://www.serve...)
response = http.post('/post.php', 'x=y', {'A'=>'1','B'=>'2','C' =>
'3'})

puts response.body

Hope it helps!

----
Enrique Comba Riepenhausen
ecomba@mac.com

I always thought Smalltalk would beat Java, I just didn't know it
would be called 'Ruby' when it did.
-- Kent Beck


subsume@gmail.com

5/25/2007 9:02:00 PM

0

Enrique Comba Riepenhausen wrote:
> Try the following:
>
> http = Net::HTTP.new('http://www.serve...)
> response = http.post('/post.php', 'x=y', {'A'=>'1','B'=>'2','C' =>
> '3'})
>
> puts response.body

The x=y become POST variables and the {'A'=>'1' ...} drop out of the
equation entirely.

Actual code:

http = Net:HTTP.new(domain.com)
response = http.post(script.asp,'x=y',{'A'=>'1','B'=>'2'})
content = response.body

Perhaps I have misapplied it?

Note: including http:// in the domain gives a connection error,
strangely.

--
Posted via http://www.ruby-....

Enrique Comba Riepenhausen

5/25/2007 9:16:00 PM

0

> The x=y become POST variables and the {'A'=>'1' ...} drop out of the
> equation entirely.
>
> Actual code:
>
> http = Net:HTTP.new(domain.com)
> response = http.post(script.asp,'x=y',{'A'=>'1','B'=>'2'})
> content = response.body
>
> Perhaps I have misapplied it?
>
> Note: including http:// in the domain gives a connection error,
> strangely.

That is true, my typo...

OOOOPsssss I'm sorry, my fault!

Try this:
http = Net::HTTP.new('domain.com')
response = http.post('/script.asp', 'x=y')
content = response.body

The {} sets header fields if you take a closer look at the post
request itself you will see them there.

Cheers,
----
Enrique Comba Riepenhausen
ecomba@mac.com

I always thought Smalltalk would beat Java, I just didn't know it
would be called 'Ruby' when it did.
-- Kent Beck


subsume@gmail.com

5/25/2007 9:27:00 PM

0

Enrique Comba Riepenhausen wrote:
> Try this:
> http = Net::HTTP.new('domain.com')
> response = http.post('/script.asp', 'x=y')
> content = response.body
>
> The {} sets header fields if you take a closer look at the post
> request itself you will see them there.

Now you've confused me. The above example doesn't even contain the
variables I want to send as POST. I need to send x=y as GET and a=1 as
POST. Get it?

In other words: I need to POST 'a=1' to 'script.asp?y=z'

--
Posted via http://www.ruby-....

Enrique Comba Riepenhausen

5/25/2007 9:37:00 PM

0


On 25 May 2007, at 23:27, Sy Ys wrote:

> Enrique Comba Riepenhausen wrote:
>> Try this:
>> http = Net::HTTP.new('domain.com')
>> response = http.post('/script.asp', 'x=y')
>> content = response.body
>>
>> The {} sets header fields if you take a closer look at the post
>> request itself you will see them there.
>
> Now you've confused me. The above example doesn't even contain the
> variables I want to send as POST. I need to send x=y as GET and a=1 as
> POST. Get it?
>
> In other words: I need to POST 'a=1' to 'script.asp?y=z'

Okay, then change the following:

response = http.post('/script.asp?y=z', 'a=1')

Sorry for the confusion.... ;)



subsume@gmail.com

5/25/2007 10:05:00 PM

0

Enrique Comba Riepenhausen wrote:
> Sorry for the confusion.... ;)

Now we're in business. =) Thanks for your wonderful help, buddy.

--
Posted via http://www.ruby-....

Enrique Comba Riepenhausen

5/25/2007 10:32:00 PM

0

On 26 May 2007, at 00:05, Sy Ys wrote:

> Enrique Comba Riepenhausen wrote:
>> Sorry for the confusion.... ;)
>
> Now we're in business. =) Thanks for your wonderful help, buddy.
>

Anytime! ;)