如何使用Net:HTTP运行此curl命令

时间:2014-10-25 01:05:44

标签: ruby-on-rails

所以我需要通过https:

运行此命令
curl -u "{user_id}:{license_key}" \
      "https://geoip.maxmind.com/geoip/v2.1/city/me?pretty"

我在想这可能是这个

http://www.ruby-doc.org/stdlib-2.1.3/libdoc/net/http/rdoc/Net/HTTP.html#class-Net::HTTP-label-HTTPS

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我假设您正在尝试进行基本身份验证。对于使用SSL基本身份验证的net/http获取请求,您可以执行以下操作:

require 'uri'
require 'net/http'

uri = URI("https://geoip.maxmind.com/geoip/v2.1/city/me?pretty")
uri.basic_auth 'user_id', 'license_key'

res = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => true) { |http| 
  http.request(req) 
}
puts res.body

我个人发现所有这些设置非常麻烦;您还可以选择标准库选项的用户友好的宝石。以下是使用httparty查看相同请求的方式:

require 'httparty'
auth = { :username => 'user_id', :password => 'license_key' }
res = HTTParty.get("https://geoip.maxmind.com/geoip/v2.1/city/me?pretty", 
  :basic_auth => auth)