Here is my code
domain = \'http://www.google.com\'
url = URI.parse \"https://graph.facebook.com/fql?q=SELECT%20url,normalized_url%20FROM%20link_stat%20WHERE%20ur
Accepted answer was giving me an error -
`initialize': no implicit conversion of Hash into String (TypeError)
When I was using -
Net::HTTP.start(url.host, url.port, :use_ssl => url.scheme == 'https')
My Ruby version is -
arup_ruby$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin12.0]
Then, I modified the code as below :-
require "uri"
require "net/http"
domain = 'http://www.google.com'
uri = URI.parse("https://graph.facebook.com/fql?q=SELECT%20url,normalized_url%20FROM%20link_stat%20WHERE%20url='#{domain}'")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'
req = Net::HTTP::Get.new uri
res = http.start { |http| http.request req }
puts res
# >> #<Net::HTTPOK:0x000001018f8520>
And it worked.
There are several oddities in your code. The main is: since you use SSL
you are to aknowledge HTTP.start
about with :use_ssl => url.scheme == 'https'
. HTTP.Get
constructor awaits for an URI
, not the path. The summing up:
domain = 'http://www.google.com'
url = URI.parse("https://graph.facebook.com/fql?q=SELECT%20url,normalized_url%20FROM%20link_stat%20WHERE%20url='#{domain}'")
req = Net::HTTP::Get.new url
res = Net::HTTP.start(url.host, url.port,
:use_ssl => url.scheme == 'https') {|http| http.request req}
puts res
Gives:
#<Net::HTTPOK:0x000000027d0558>