Ruby TCPSocket / HTTP请求

我刚开始使用TCPSockets。 我只想尝试获取谷歌主页。 这是我的代码:

require 'socket' host = 'http://www.google.com' port = 80 s = TCPSocket.open host, port s.puts "GET / HTTP/1.1\r\n" s.puts "Host: Firefox" s.puts "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" s.puts "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" s.puts "\r\n" while line = s.gets puts line.chop end s.close 

返回:

 HTTP/1.1 302 Document has moved Location: http://92.242.140.29/?nxdomain=http%3A%2F%2Ffirefox&AddInType=2&PlatformInfo=pbrgen 

为什么? 我的目标是获取谷歌主页的内容。 谢谢

 require 'socket' host = 'www.google.com' port = 80 s = TCPSocket.open host, port s.puts "GET / HTTP/1.1\r\n" s.puts "\r\n" while line = s.gets puts line.chop end s.close 

此外,使用真正的HTTP客户端将使您的生活更加轻松。 我喜欢Typhoeus 。

302状态是一种HTTP重定向,但是在这里你正在使用TCP,一个HTTP下面的网络层,它不了解重定向(或任何其他HTTP)。 正如这篇SOpost所示 ,还有其他方式来请求网页,即使用OpenURI库而不是套接字。