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

如何使用Ruby内置模块发送带请求头的HTTPS请求

使用Ruby内置模块发送带请求头的HTTPS请求解决方案

我明白你折腾了半天查文档、做测试、搜资料,还是没搞定用Ruby内置模块发带请求头的HTTPS请求——别着急,咱们用Ruby自带的Net::HTTP模块就能轻松实现,我给你详细拆解步骤、示例代码,顺便说下大家常踩的坑。

完整可运行示例代码

先给你一个直接能用的版本,涵盖HTTPS、自定义请求头的核心逻辑:

require 'net/http'
require 'uri'

# 替换成你的目标接口URL
target_uri = URI('https://example.com/api/your-endpoint')

# 初始化HTTPS连接
http_client = Net::HTTP.new(target_uri.host, target_uri.port)
http_client.use_ssl = true # 必须开启这行,否则是HTTP请求

# 构建请求并添加自定义请求头
request = Net::HTTP::Get.new(target_uri)
# 这里根据你的需求添加请求头,格式和哈希操作一致
request['Authorization'] = 'Bearer your-access-token-here'
request['Content-Type'] = 'application/json'
request['X-Your-Custom-Header'] = 'custom-value'

# 发送请求并获取响应
response = http_client.request(request)

# 处理响应结果
puts "响应状态码: #{response.code}"
puts "响应内容: #{response.body}"

针对你失败情况的常见排查点

你之前尝试没成功,大概率是踩了这些坑:

  • 忘了开启SSL:http_client.use_ssl = true是HTTPS请求的核心,没加这行的话,即使URL是https开头,也会走HTTP协议,直接报错
  • SSL证书验证失败:如果遇到证书相关错误,测试阶段可以临时关闭验证(生产环境绝对不能这么做):http_client.verify_mode = OpenSSL::SSL::VERIFY_NONE;生产环境建议指定合法的CA证书路径:http_client.ca_file = '/path/to/your-ca-cert.pem'
  • 请求方法不匹配:如果接口要求POST请求,把Net::HTTP::Get.new换成Net::HTTP::Post.new,如果要发送JSON体,还要加上request.body = JSON.generate({key: 'value'})(记得先引入json模块)
  • 请求头格式错误:比如Authorization头的Bearer后面必须加空格,Content-Type要和请求体类型对应(比如发表单就用application/x-www-form-urlencoded)

更简洁的链式写法

Ruby还支持用Net::HTTP.start链式调用,自动管理连接的打开和关闭,代码更简洁安全:

require 'net/http'
require 'uri'

target_uri = URI('https://example.com/api/your-endpoint')

response = Net::HTTP.start(target_uri.host, target_uri.port, use_ssl: true) do |http|
  request = Net::HTTP::Get.new(target_uri)
  request['Authorization'] = 'Bearer your-access-token-here'
  request['Content-Type'] = 'application/json'
  http.request(request)
end

puts response.body

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:05:12