Получить заголовки ответов из запроса Ruby HTTP

Я делаю HTTP-запрос с Ruby, используя Net:: HTTP, и я не могу понять, как получить все заголовки ответов.

пробовал response.header и response.headers и ничего не работает.

3 ответов


объект response фактически содержит заголовки.

в разделе "Net:: HTTPResponse" для получения дополнительной информации.

вы можете сделать:

response['Cache-Control']

вы также можете позвонить each_header или each на объекте ответа для итерации по заголовкам.

если вы действительно хотите заголовки вне объекта ответа, вызовите response.to_hash


отметим, что RestClient библиотека имеет ожидаемое поведение для response.headers.

response.headers
{
                          :server => "nginx/1.4.7",
                            :date => "Sat, 08 Nov 2014 19:44:58 GMT",
                    :content_type => "application/json",
                  :content_length => "303",
                      :connection => "keep-alive",
             :content_disposition => "inline",
     :access_control_allow_origin => "*",
          :access_control_max_age => "600",
    :access_control_allow_methods => "GET, POST, PUT, DELETE, OPTIONS",
    :access_control_allow_headers => "Content-Type, x-requested-with"
}

ответ Net::HTTPResponse содержит заголовки от Net::HTTPHeader что вы можете получить от each_header метод, как сказал @Intrepidd, который вернет перечислитель, как показано ниже:

response.each_header

#<Enumerator: #<Net::HTTPOK 200 OK readbody=true>:each_header>
[
  ["x-frame-options", "SAMEORIGIN"],
  ["x-xss-protection", "1; mode=block"],
  ["x-content-type-options", "nosniff"],
  ["content-type", "application/json; charset=utf-8"],
  ["etag", "W/\"51a4b917285f7e77dcc1a68693fcee95\""],
  ["cache-control", "max-age=0, private, must-revalidate"],
  ["x-request-id", "59943e47-5828-457d-a6da-dbac37a20729"],
  ["x-runtime", "0.162359"],
  ["connection", "close"],
  ["transfer-encoding", "chunked"]
]

вы можете получить фактический хэш, используя to_h метод, как показано ниже:

response.each_header.to_h

{
  "x-frame-options"=>"SAMEORIGIN", 
  "x-xss-protection"=>"1; mode=block", 
  "x-content-type-options"=>"nosniff", 
  "content-type"=>"application/json; charset=utf-8", 
  "etag"=>"W/\"51a4b917285f7e77dcc1a68693fcee95\"", 
  "cache-control"=>"max-age=0, private, must-revalidate", 
  "x-request-id"=>"59943e47-5828-457d-a6da-dbac37a20729", 
  "x-runtime"=>"0.162359", 
  "connection"=>"close", 
  "transfer-encoding"=>"chunked"
}