gpt4 book ai didi

ruby-on-rails - Ruby 无法发送 SSL 请求,但 Curl 可以

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:04 27 4
gpt4 key购买 nike

我在 Ruby 中遇到了错误。但它适用于 CURL

环境是rbenv

Ruby 版本:ruby 2.1.2p95(2014-05-08 修订版 45877)[x86_64-darwin13.0]

error: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

curl

curl -k https://xx:443/ -i \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST -d @${1} https://xx:443/service/

ruby

@uri = URI.parse(server_url)
@https = Net::HTTP.new(@uri.host, @uri.port)
@https.use_ssl = true

req = Net::HTTP::Post.new(@uri.path, initheader = @header )
to_send_body = {
"ServiceID" => "SignUp",
"UserID" => "fs.test@dsd.com",
"Password" => "123456789"
}
req.body = to_send_body.to_json
res = @https.request(req)

数据.json

{"ServiceID" : "SignUp","UserID" : "poc.test@123.com","Password" : "123456789"}

更新

我终于通过 curb gem 完成了,但是在 http 方式上还是失败了,

限制版本

c = Curl::Easy.http_post("https://1xx.xx.x.2:443/service/", to_send_body.to_json   
) do |curl|
curl.ssl_verify_peer = false
curl.headers['Accept'] = 'application/json'
curl.headers['Content-Type'] = 'application/json'
end

最佳答案

curl 中的 -k 标志意味着当证书无效时它仍然会连接。要在 ruby​​ 中完成相同的事情,请使用以下内容

@https = Net::HTTP.new(@uri.host, @uri.port)
@https.use_ssl = true
@https.verify_mode = OpenSSL::SSL::VERIFY_NONE

关于ruby-on-rails - Ruby 无法发送 SSL 请求,但 Curl 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24822531/

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