HTTP request error: name or service not known
I am trying to make HTTP requests via Ruby. When running the following code:
require "net/http" require "uri" uri = URI.parse("http://google.com/") # Will print response.body Net::HTTP.get_print(uri)
I get the following error:
SocketError: initialize: name or service not known from org/jruby/ext/socket/RubyTCPSocket.java:129:in `initialize' from org/jruby/RubyIO.java:1179:in `open' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:762:in `connect' from org/jruby/ext/timeout/Timeout.java:105:in `timeout' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:762:in `connect' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:755:in `do_start' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:744:in `start' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:454:in `get_response' from c:/jruby-1.7.3/lib/ruby/1.9/net/http.rb:412:in `get_print' from (irb):29:in `evaluate' from org/jruby/RubyKernel.java:1066:in `eval' from org/jruby/RubyKernel.java:1409:in `loop' from org/jruby/RubyKernel.java:1174:in `catch' from org/jruby/RubyKernel.java:1174:in `catch' from c:/jruby-1.7.3/bin/irb:13:in `(root)'
This is probably proxy related, but I am not sure. How can I fix this problem?
Ruby will automatically use the HTTP proxy as specified in your environment variables.
EXPORT http_proxy=http://foo.bar:8080/ ruby your_http_script.rb
Same thing happened to me. No proxy was in use.
The reason was that I was not running as root and /etc/resolv.conf didn't have read permissions to anyone other than root. Adding read permissions solved the host resolving problem.