在ruby中使用特定的http版本协议发送http请求

时间:2014-10-15 11:35:44

标签: ruby http version

有一些方法可以使用特定的http版本协议在ruby中发送http请求。

我使用net / http但默认(可能是硬编码)版本是1.1。

是否可以转向1.0?

1 个答案:

答案 0 :(得分:0)

覆盖Net::HTTP::HTTPVersion(默认为'1.1')似乎有效:

require 'net/http'

Net::HTTP.send(:remove_const, :HTTPVersion) # avoid warning
Net::HTTP::HTTPVersion = '1.0'

http = Net::HTTP.new('example.com')
http.set_debug_output($stdout)
http.get('/')

输出:

<- "GET / HTTP/1.0\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: Ruby\r\nConnection: close\r\nHost: example.com\r\n\r\n"
-> "HTTP/1.0 200 OK\r\n"
-> "Accept-Ranges: bytes\r\n"
-> "Cache-Control: max-age=604800\r\n"
-> "Content-Type: text/html\r\n"
-> ...

发送GET / HTTP/1.0,服务器以HTTP/1.0 200 OK回答。请注意,HTTP / 1.1标头(例如Host: example.com)仍然存在。