2

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

なんで?私の目標は、グーグルのホームページのコンテンツを取得することです。ありがとう

4

2 に答える 2

6
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が好きです。

于 2011-12-27T22:23:21.487 に答える
0

302ステータスはHTTPリダイレクトの一種ですが、ここでは、リダイレクト(またはその他のHTTP)を理解しないHTTPの下のネットワーク層であるTCPを使用しています。ただし、このSO投稿に示されているように、Webページを要求する方法は他にもあります。つまり、ソケットの代わりにOpenURIライブラリを使用します。

于 2011-12-27T22:25:42.783 に答える