我正在尝试按标题中的指定制作http get请求。 我写的:
uri = URI.parse("https://myaddress.com")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
@data = http.get(uri.request_uri)
请求发送到我想要发送的地方,我收到一个未经授权的响应(正如预期的那样,因为我没有指定基本身份验证)。
我试过了
http.basic_auth 'user', 'pass'
但是对于我的http变量的类型,没有这样的方法。 如何添加身份验证详细信息?
更新:我尝试使用像RUBY - SSL, Basic Auth, and POST这样的东西,但在用Get替换Post后,我不能使用'use_ssl',也不能使用'verify_mode'属性(我没有得到这样的属性错误)。
更新2:我发现我可以在Net :: HTTP对象上设置'use_ssl'属性,在Net :: HTTP :: Get对象上设置'basic_auth'。 现在的问题是如何让它们一起工作?
答案 0 :(得分:4)
好吧,我最终找到了答案。也许这会对其他人有所帮助:
url = URI.parse('https://myaddress.com')
req = Net::HTTP::Get.new(url.path)
req.basic_auth 'user', 'pass'
sock = Net::HTTP.new(url.host, url.port)
sock.use_ssl = true
sock.verify_mode = OpenSSL::SSL::VERIFY_NONE
resp = sock.start {|http| http.request(req) }