rails make ruby httprequest

make - Obtener encabezados de respuesta de solicitud de Ruby HTTP



ruby on rails http get request (4)

Estoy haciendo una solicitud HTTP con Ruby usando Net :: HTTP, y no puedo averiguar cómo obtener todos los encabezados de respuesta.

Intenté response.header y response.headers y nada está funcionando.


El objeto de respuesta en realidad contiene los encabezados.

Consulte " Net::HTTPResponse " para obtener más información.

Tu puedes hacer:

response[''Cache-Control'']

También puede llamar a each_header o al objeto de respuesta para iterar a través de los encabezados.

Si realmente desea que los encabezados estén fuera del objeto de respuesta, llame a response.to_hash


La respuesta Net::HTTPResponse contiene encabezados de Net::HTTPHeader que puede obtener con el método each_header , como dice @Intrepidd, que devolverá un enumerador como se muestra a continuación:

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"] ]

Puede obtener el hash real utilizando el método to_h como se muestra a continuación:

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" }


Si necesita una salida fácil de usar , entonces puede utilizar each_capitalized :

response.each_capitalized { |key, value| puts " - #{key}: #{value}" }

Esto imprimirá:

- Content-Type: application/json; charset=utf-8 - Transfer-Encoding: chunked - Connection: keep-alive - Status: 401 Unauthorized - Cache-Control: no-cache - Date: Wed, 28 Nov 2018 09:06:39 GMT


Tenga en cuenta que la biblioteca RestClient tiene el comportamiento esperado para 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" }