用户代理HTTP请求中,红宝石(User-Agent in HTTP requests, Ruby)

2019-09-18 05:28发布

我很新的红宝石。 我试着找了在线文档,但我没有发现任何东西相当多的工作。 我想包括)一个用户代理下面的HTTP请求,机器人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

Answer 1:

阿米尔˚F是正确的,你可能会喜欢使用像RESTClient实现或法拉第另一个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


Answer 2:

Net::HTTP是非常低的水平,我会建议使用其他客户端的宝石 -它也将遵循自动重定向和更容易让你使用,即工作:

require 'rest_client'

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


文章来源: User-Agent in HTTP requests, Ruby