RubyでNet :: HTTPを使用してHTTPリクエストを作成していますが、すべてのレスポンスヘッダを取得する方法がわかりません。Ruby HTTPリクエストからレスポンスヘッダを取得
私はresponse.header
とresponse.headers
を試しましたが、何も動作していません。
RubyでNet :: HTTPを使用してHTTPリクエストを作成していますが、すべてのレスポンスヘッダを取得する方法がわかりません。Ruby HTTPリクエストからレスポンスヘッダを取得
私はresponse.header
とresponse.headers
を試しましたが、何も動作していません。
応答オブジェクトには実際にヘッダーが含まれています。
詳しくは、Net::HTTPResponseを参照してください。
あなたが行うことができます:あなたはまた、ヘッダーを繰り返し処理したレスポンス・オブジェクトにeach_header
またはeach
を呼び出すことができます
response['Cache-Control']
。
あなたが本当にレスポンスオブジェクトの外側ヘッダをしたい場合は、RestClient
ライブラリはresponse.headers
のための正常な動作を持っていることをresponse.to_hash
注意を呼び出します。
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
は@Intrepiddで言ったように、あなたが以下のように列挙子を返しますどのeach_header
方法から得ることができますNet::HTTPHeader
からヘッダーが含まれています
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"
}
Net/HTTPは悪名高い悪質なAPIを持っています。 httpclientのような別のものを使用していた場合、 'response.header'はちょうど働いていたでしょう。 –
何が悪いのですか?なぜ私はそれを避けたいのですか? – BlackHatSamurai
ライブラリそのものは悪くありませんが、あなたが発見したように、APIはまばらで直感的ではありません。私はいつでも、httpclientや、HTTParty、Rest-Clientなどのより多くの機能を備えたラッパーライブラリーを使用します。 –