You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带Headers调用Net::HTTP.get访问HTTPS报错如何不使用旧方法解决?

问题根因

Net::HTTP.get 存在两套方法签名,你传入两个位置参数时触发了错误的匹配逻辑:

  • 仅传1个位置参数时,方法会识别为URI实例,走适配HTTPS的调用逻辑
  • 传2个位置参数时,方法会默认匹配host + 路径的传统签名,尝试把你传入的URI对象转为主机名字符串,自然就抛出类型转换错误。

解决方案

不需要换旧的手动建连接写法,只要把请求头作为关键字参数传入即可:

require 'net/http'
# 增加 initheader: 关键字声明,就能正确匹配URI作为首参的方法签名
Net::HTTP.get(URI('https://google.com'), initheader: { 'Accept' => 'text/html' })

如果需要同时拿到响应状态、头等信息,也可以用同系列的get_response方法,它支持直接把请求头作为第二个位置参数传入:

response = Net::HTTP.get_response(URI('https://google.com'), { 'Accept' => 'text/html' })
puts response.code # 响应状态码
puts response.body # 响应内容

内容的提问来源于stack exchange,提问作者fny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:45:00