2012-06-18 16 views
5

Tôi khá mới đối với Ruby. Tôi đã thử tìm kiếm các tài liệu trực tuyến, nhưng tôi đã không tìm thấy bất cứ điều gì mà khá hoạt động. Tôi muốn bao gồm User-Agent trong các yêu cầu HTTP sau, bot get_response() và get(). Ai đó có thể chỉ cho tôi đi đúng hướng?Tác nhân người dùng trong các yêu cầu HTTP, Ruby

# Preliminary check that Proggit is up 
    check = Net::HTTP.get_response(URI.parse(proggit_url)) 
    if check.code != "200" 
    puts "Error contacting Proggit" 
    return 
    end 

    # Attempt to get the json 
    response = Net::HTTP.get(URI.parse(proggit_url)) 
    if response.nil? 
    puts "Bad response when fetching Proggit json" 
    return 
    end 
+0

Tôi nghĩ đây là giải pháp cho vấn đề của bạn: http://www.dzone.com/snippets/send-custom-headers-ruby HOẶC http://stackoverflow.com/questions/587559/ruby-how-to-make -an-http-get-với-sửa đổi-tiêu đề – nhahtdh

Trả lời

9

Amir F là đúng, mà bạn có thể thích sử dụng một ứng dụng khách HTTP khác như RestClient hoặc Faraday, nhưng nếu bạn muốn gắn bó với thư viện Ruby chuẩn, bạn có thể đặt tác nhân người dùng của mình như sau:

url = URI.parse(proggit_url) 
req = Net::HTTP::Get.new(proggit_url) 
req.add_field('User-Agent', 'My User Agent Dawg') 
res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) } 
res.body 
+0

Cảm ơn! Điều này dường như đã làm việc! – hodgesmr

+0

Trên ruby ​​1.9.3, nếu tôi làm 'add_field' như thế này, tôi kết thúc với một tác nhân người dùng như' Ruby, Tác nhân người dùng của tôi Dawg' –

1

Net::HTTP là mức rất thấp, tôi sẽ khuyên bạn sử dụng các rest-client gem - nó cũng sẽ sau chuyển hướng tự động và dễ dàng hơn cho bạn để làm việc với, ví dụ:

require 'rest_client' 

response = RestClient.get proggit_url 
if response.code != 200 
    # do something 
end 
Các vấn đề liên quan