02 - customizing http request headers.rb

来自「O Reilly Ruby Cookbook source code」· RB 代码 · 共 62 行

RB
62
字号
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|        path_query = uri.path + (uri.query ? ('?' + uri.query) : '')        return http.get(path_query, headers)      end    end  endend#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.sizeres.body[s-200..s-140]# => "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# => 65150gzipped = Net::HTTP.get_with_headers('http://www.cnn.com/',                                     {'Accept-Encoding' => 'gzip'})gzipped['Content-Encoding']# => "gzip"gzipped.body.size# => 14600require 'zlib'require 'stringio'body_io = StringIO.new(gzipped.body)unzipped_body = Zlib::GzipReader.new(body_io).read()unzipped_body.size# => 65150#---uri = URI.parse('http://www.google.com/')path_query = uri.path + (uri.query ? ('?' + uri.query) : '')request = Net::HTTP::Get.new(path_query)['en_us', 'en', 'en_gb', 'ja'].each do |language|  request.add_field('Accept-Language', language)endrequest['Accept-Language']# => "en_us, en, en_gb, ja"Net::HTTP.start(uri.host, uri.port) do |http|  response = http.request(request)  # ... process the HTTPResponse object hereend#---

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?