gpt4 book ai didi

ruby - HTTPS请求错误: undefined method `set_body_internal'

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:25 24 4
gpt4 key购买 nike

以下代码无法执行:

require 'net/http'

uri = URI('https://example.com:8443')
http = Net::HTTP.new(uri.host, uri.port)

# Enable SSL/TLS ?
if uri.scheme == "https"
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ca_file = File.join(File.dirname(__FILE__), "ca-rsa-cert.pem")
end

http.start {
http.request(uri)
}

错误是:

$ ./TestCert.rb
/usr/lib/ruby/1.9.1/net/http.rb:1292:in `request': undefined method `set_body_internal'
for #<URI::HTTPS:0x00000001a47fd0 URL:https://example.com:8443> (NoMethodError)
from ./TestCert.rb:16:in `block in <main>'
from /usr/lib/ruby/1.9.1/net/http.rb:745:in `start'
from ./TestCert.rb:15:in `<main>'

不同于Ruby NoMethodError (undefined method `set_body_internal') with HTTP get ,我正在使用 HTTPS,我不关心响应。我只需要 Ruby 建立连接来测试 SSL/TLS 服务器。

我确实尝试针对相关问题获取响应,但出现了同样的错误:

http.start {
response = http.request uri
}

这有同样的错误:

response = http.start {
http.request uri
}

http.get 也失败了(但有不同的错误 - undefined method 'empty?'):

response = http.start {
http.get uri
}

还有另一个失败(但有不同的错误 - undefined method 'empty?'):

http.start {
response = http.get uri
}

如果重要的话,这是一个运行 Ruby 1.9.3p194 的 Debian 7.3 (x64) 系统。

如何使用 Ruby 通过 SSL/TLS 发出 HTTP 请求?

最佳答案

我认为你调用 http.request(uri) 是错误的,你应该传递一种像 Net::HTTP::Get 这样的请求对象,而不是 URI。尝试使用以下代码:

require 'net/http'

uri = URI('https://example.com:8443')
http = Net::HTTP.new(uri.host, uri.port)

# Enable SSL/TLS ?
if uri.scheme == "https"
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ca_file = File.join(File.dirname(__FILE__), "ca-rsa-cert.pem")
end

req = Net::HTTP::Get.new('/')
http.request(req)

或直接调用request_get('/') .该方法将为您创建 Get 对象,如文档说明:

def request_get(path, initheader = nil, &block) # :yield: +response+
request(Get.new(path, initheader), &block)
end

关于ruby - HTTPS请求错误: undefined method `set_body_internal' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22537189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com