2013-02-06 24 views
13

से प्रतिक्रिया शीर्षलेख प्राप्त करें मैं नेट :: HTTP का उपयोग कर रुबी के साथ HTTP अनुरोध कर रहा हूं, और मैं यह नहीं समझ सकता कि सभी प्रतिक्रिया शीर्षलेख कैसे प्राप्त करें।रुबी HTTP अनुरोध

मैंने response.header और response.headers की कोशिश की और कुछ भी काम नहीं कर रहा है।

+0

नेट/HTTP में एक कुख्यात खराब एपीआई है। यदि आप किसी अन्य का उपयोग कर रहे थे, जैसे httpclient, 'response.header' अभी काम करता। –

+0

बुरा से आपका क्या मतलब है? मैं इसे क्यों टालना चाहता हूं? – BlackHatSamurai

+0

लाइब्रेरी स्वयं खराब नहीं है, लेकिन एपीआई आपके द्वारा खोजी गई गड़बड़ी और अनजान है। मैं हमेशा httpclient या एक रैपर लाइब्रेरी का उपयोग करता हूं जिसमें HTTParty, Rest-Client, आदि जैसी अधिक सुविधाएं होती हैं। –

उत्तर

36

प्रतिक्रिया ऑब्जेक्ट में वास्तव में हेडर शामिल हैं।

अधिक जानकारी के लिए "Net::HTTPResponse" देखें।

आप कर सकते हैं:

response['Cache-Control'] 

तुम भी प्रतिक्रिया वस्तु पर each_header या each कॉल कर सकते हैं हेडर के माध्यम से पुनरावृति करने के लिए।

तुम सच में प्रतिक्रिया ऑब्जेक्ट के बाहर हेडर चाहते हैं, फोन response.to_hash

2

नोट 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" 
} 
0

प्रतिक्रिया Net::HTTPResponseNet::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" 
}