MST

星途 面试题库

面试题:Ruby网络编程之HTTP请求处理

在Ruby中,使用Net::HTTP库发送一个POST请求到指定URL,并附带特定的表单数据,应该如何实现?请写出关键代码并简要解释每一步的作用。
45.0万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试
require 'net/http'
require 'uri'

# 1. 解析URL
uri = URI('https://example.com/api')

# 2. 创建HTTP对象
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true if uri.scheme == 'https'

# 3. 构建表单数据
form_data = {
  key1: 'value1',
  key2: 'value2'
}.to_query

# 4. 创建POST请求对象
request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/x-www-form-urlencoded')
request.body = form_data

# 5. 发送请求并获取响应
response = http.request(request)
puts response.body
  1. 解析URL:使用URI类解析目标URL,以便后续获取主机、端口等信息。
  2. 创建HTTP对象:根据解析出的主机和端口创建Net::HTTP对象,若URL是https协议则开启SSL。
  3. 构建表单数据:将表单数据以哈希形式存储,通过to_query方法转换为符合application/x-www-form-urlencoded格式的字符串。
  4. 创建POST请求对象:创建Net::HTTP::Post请求对象,设置请求头Content-Typeapplication/x-www-form-urlencoded,并将表单数据放入请求体。
  5. 发送请求并获取响应:使用HTTP对象发送请求并获得响应,response.body可获取响应内容。