2012-06-18 4 views
5

저는 Ruby를 처음 접했습니다. 나는 온라인 문서를 조사해 보았으나 꽤 잘 작동하는 것은 발견하지 못했다. 다음 HTTP 요청, bot get_response() 및 get()에 User-Agent를 포함하고 싶습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?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

이것이 문제의 해결책이라고 생각합니다. http://www.dzone.com/snippets/send-custom-headers-ruby 또는 http://stackoverflow.com/questions/587559/ruby-how-to-make -an-http-get-with-modified-headers – nhahtdh

답변

9

Amir F이 올바른지, 당신이 RestClient 나 Faraday와 같은 다른 HTTP 클라이언트를 사용하는 것을 즐긴다. 그러나 표준 Ruby 라이브러리를 고수하고 싶다면 다음과 같이 사용자 에이전트를 설정할 수있다 :

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

고마워요! 이것은 효과가있는 것처럼 보입니다! – hodgesmr

+0

루비 1.9.3에서'add_field'를 이렇게하면'Ruby, My User Agent Dawg'와 같은 사용자 에이전트가 생깁니다. –

1

Net::HTTP은 매우 낮은 수준, 내가 rest-client gem 사용하는 것이 좋습니다 것입니다 - 자동으로 또한 다음과 것이다 리디렉션하고, 즉, 작업을 쉽게 할 수 :

require 'rest_client' 

response = RestClient.get proggit_url 
if response.code != 200 
    # do something 
end