5

我对Ruby很陌生。我已经尝试查看在线文档,但我没有找到任何非常有效的方法。我想在以下 HTTP 请求中包含一个用户代理,即 bot get_response() 和 get()。有人可以指出我正确的方向吗?

  # 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
4

2 回答 2

8

Amir F是正确的,您可能喜欢使用其他 HTTP 客户端,例如 RestClient 或 Faraday,但如果您想坚持使用标准 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
于 2012-06-18T13:45:16.743 回答
1

Net::HTTP非常低级,我建议使用rest-client gem - 它还会自动跟随重定向,并且更容易使用,即:

require 'rest_client'

response = RestClient.get proggit_url
if response.code != 200
  # do something
end
于 2012-06-18T06:25:14.737 回答