This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Customizing HTTP Request Headers | ||
|---|---|---|
| Code | Expected | Actual |
require 'net/http'
require 'uri'
#A simple wrapper method that accepts either strings or URI objects
#and performs an HTTP GET.
module Net
class HTTP
def HTTP.get_with_headers(uri, headers=nil)
uri = URI.parse(uri) if uri.respond_to? :to_str
start(uri.host, uri.port) do |http|
return http.get(uri.path, headers)
end
end
end
end
#Let's get a web page in German.
res = Net::HTTP.get_with_headers('http://www.google.com/',
{'Accept-Language' => 'de'})
#Check a bit of the body to make sure it's really in German.
s = res.body.size
res.body[s-200..s-140] |
"ngebote</a> - <a href=/intl/de/about.html>Alles \374ber Google</" | "ngebote</a> - <a href=/intl/de/about.html>Alles \374ber Google</" |
Net::HTTP.get_with_headers(url, {'User-Agent' => 'Ruby Web Browser v1.0'})
uncompressed = Net::HTTP.get_with_headers('http://www.cnn.com/')
uncompressed.body.size |
65150 | 98596 |
gzipped = Net::HTTP.get_with_headers('http://www.cnn.com/',
{'Accept-Encoding' => 'gzip'})
gzipped['Content-Encoding'] |
"gzip" | "gzip" |
gzipped.body.size |
14600 | 18291 |
require 'zlib' require 'stringio' body_io = StringIO.new(gzipped.body) unzipped_body = Zlib::GzipReader.new(body_io).read() unzipped_body.size |
65150 | 98596 |
uri = URI.parse('http://www.google.com/')
request = Net::HTTP::Get.new(uri.path)
['en_us', 'en', 'en_gb', 'ja'].each do |language|
request.add_field('Accept-Language', language)
end
request['Accept-Language'] |
"en_us, en, en_gb, ja" | "en_us, en, en_gb, ja" |
Net::HTTP.start(uri.host, uri.port) do |http| response = http.request(request) # ... process the HTTPResponse object here end |
#<Net::HTTPOK 200 OK readbody=true> | |