Need help passing variable to Net::HTTP

I have used Net::HTTP like this:

Net::HTTP.get ‘google.com’, ‘/index.html’

I would like to pass it a variable instead.

I tried this:

irb(main):001:0> require ‘net/http’
=> true
irb(main):002:0> url = String.new
=> “”
irb(main):003:0> url = “‘google.com’, ‘/index.html’”
=> “‘google.com’, ‘/index.html’”
irb(main):004:0> Net::HTTP.get_print(url)
NoMethodError: undefined method host' for "'google.com', '/index.html'":String from /usr/lib/ruby/1.8/net/http.rb:379:inget_response’
from /usr/lib/ruby/1.8/net/http.rb:337:in `get_print’
from (irb):4
from :0

How do I pass a variable to Net:HTTP ?

On 08/09/10 04:18, Samuel S. wrote:

url = “‘google.com’, ‘/index.html’”

url=“google.com/index.html
Net::HTTP.get_print(URI.parse(url))

get and get_print expect an URI, if you don’t specify both host and path
as strings.

On Mon, Aug 9, 2010 at 4:18 AM, Samuel S. [email protected]
wrote:

I have used Net::HTTP like this:

Net::HTTP.get ‘google.com’, ‘/index.html’

I would like to pass it a variable instead.

You already got your answer, but I wanted to point out that:

irb(main):001:0> require ‘net/http’
=> true
irb(main):002:0> url = String.new
=> “”

You don’t need to do this, since you are assigning a new value to the
url variable just below. You are creating an object that you don’t use
at all.

irb(main):003:0> url = “‘google.com’, ‘/index.html’”
=> “‘google.com’, ‘/index.html’”

Jesus.

Jesús Gabriel y Galán wrote:

On Mon, Aug 9, 2010 at 4:18 AM, Samuel S. [email protected]
wrote:

I have used Net::HTTP like this:

Net::HTTP.get ‘google.com’, ‘/index.html’

I would like to pass it a variable instead.

You already got your answer, but I wanted to point out that:

irb(main):001:0> require ‘net/http’
=> true
irb(main):002:0> url = String.new
=> “”

You don’t need to do this, since you are assigning a new value to the
url variable just below. You are creating an object that you don’t use
at all.

irb(main):003:0> url = “‘google.com’, ‘/index.html’”
=> “‘google.com’, ‘/index.html’”

Jesus.

Thanks for the tip Jesus. I used to program in C so I have some bad
habits. I just tried my code without creating all those objects and
everything went fine.

tilde wrote:

On 08/09/10 04:18, Samuel S. wrote:

url = “‘google.com’, ‘/index.html’”

url=“google.com/index.html
Net::HTTP.get_print(URI.parse(url))

get and get_print expect an URI, if you don’t specify both host and path
as strings.

Thanks :smiley: It is working now.
This one had me stuck for hours.

Samuel S. wrote:

I have used Net::HTTP like this:

Net::HTTP.get ‘google.com’, ‘/index.html’

I would like to pass it a variable instead.

I tried this:

irb(main):001:0> require ‘net/http’
=> true
irb(main):002:0> url = String.new
=> “”
irb(main):003:0> url = “‘google.com’, ‘/index.html’”
=> “‘google.com’, ‘/index.html’”

Here’s another option you could use:

url = [‘google.com’, ‘/index.html’]
Net::HTTP.get_print(*url)

or more simply:

host = ‘google.com
path = ‘/index.html’
Net::HTTP.get_print(host, path)

On 09/08/10 09:46 , Samuel S. wrote:

Thanks for the tip Jesus. I used to program in C so I have some bad
habits. I just tried my code without creating all those objects and
everything went fine.
Might I suggest reading the first few chapters of the original Pickaxe
(http://ruby-doc.org/docs/ProgrammingRuby/) - lets say up to Basic I/O.
Although it was written for 1.6 and is woefully out-of-date as a Ruby
reference, I always found it gave one of the more digestible
explanations of OO and dynamic typing.
Ofcourse you can go right ahead and buy the newest version.
Cheers,
V.-

On 08/09/10 08:45, Samuel S. wrote:

Thanks :smiley: It is working now.
This one had me stuck for hours.

No problem ^^

Samuel S. wrote:

I have used Net::HTTP like this:

Hi Sam try to use Nokogiri gem
it will be easy (to unterstand) and fast also

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