ruby-on-rails - 使用 Ruby on Rails 的 HTTP GET 请求:OpenSSL::SSL::SSLError

标签 ruby-on-rails ruby ruby-on-rails-3 httprequest

我收到以下错误

OpenSSL::SSL::SSLError in ProfilesController#httpwork
SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A

这是我在 profiles_controller.rb 中的代码

def httpwork
    require "net/http"
    require "uri"
    require "openssl"

    http = Net::HTTP.new("00.000.00.000", 0000)
    http.use_ssl = true
    http.ssl_version = :SSLv3
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    request = Net::HTTP::Get.new("profileTest")

    response = http.request(request)
end

请注意主机/端口号是隐藏的,但格式是这样的(不像“stackoverflow.com/question”)

在 httpwork.html.erb 中

<h1>Profiles#httpwork</h1>
<%= @response.body %>

这是完整的堆栈跟踪

C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in <code>connect' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in</code>block in connect' C:/Ruby200-x64/lib/ruby/2.0.0/timeout.rb:52:in <code>timeout' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:918:in</code>connect' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:862:in <code>do_start' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:851:in</code>start' C:/Ruby200-x64/lib/ruby/2.0.0/net/http.rb:1367:in <code>request' app/controllers/profiles_controller.rb:20:in</code>httpwork' actionpack (4.1.2) lib/action_controller/metal/implicit_render.rb:4:in <code>send_action' actionpack (4.1.2) lib/abstract_controller/base.rb:189:in</code>process_action' actionpack (4.1.2) lib/action_controller/metal/rendering.rb:10:in <code>process_action' actionpack (4.1.2) lib/abstract_controller/callbacks.rb:20:in</code>block in process_action' activesupport (4.1.2) lib/active_support/callbacks.rb:113:in <code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:113:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:229:in <code>block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:229:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:229:in <code>block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in <code>block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in <code>block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:166:in <code>block in halting' activesupport (4.1.2) lib/active_support/callbacks.rb:86:in</code>call' activesupport (4.1.2) lib/active_support/callbacks.rb:86:in <code>run_callbacks' actionpack (4.1.2) lib/abstract_controller/callbacks.rb:19:in</code>process_action' actionpack (4.1.2) lib/action_controller/metal/rescue.rb:29:in <code>process_action' actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:31:in</code>block in process_action' activesupport (4.1.2) lib/active_support/notifications.rb:159:in <code>block in instrument' activesupport (4.1.2) lib/active_support/notifications/instrumenter.rb:20:in</code>instrument' activesupport (4.1.2) lib/active_support/notifications.rb:159:in <code>instrument' actionpack (4.1.2) lib/action_controller/metal/instrumentation.rb:30:in</code>process_action' actionpack (4.1.2) lib/action_controller/metal/params_wrapper.rb:250:in <code>process_action' activerecord (4.1.2) lib/active_record/railties/controller_runtime.rb:18:in</code>process_action' actionpack (4.1.2) lib/abstract_controller/base.rb:136:in <code>process' actionview (4.1.2) lib/action_view/rendering.rb:30:in</code>process' actionpack (4.1.2) lib/action_controller/metal.rb:196:in <code>dispatch' actionpack (4.1.2) lib/action_controller/metal/rack_delegation.rb:13:in</code>dispatch' actionpack (4.1.2) lib/action_controller/metal.rb:232:in <code>block in action' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:82:in</code>call' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:82:in <code>dispatch' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:50:in</code>call' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:71:in <code>block in call' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:59:in</code>each' actionpack (4.1.2) lib/action_dispatch/journey/router.rb:59:in <code>call' actionpack (4.1.2) lib/action_dispatch/routing/route_set.rb:678:in</code>call' rack (1.5.2) lib/rack/etag.rb:23:in <code>call' rack (1.5.2) lib/rack/conditionalget.rb:25:in</code>call' rack (1.5.2) lib/rack/head.rb:11:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/params_parser.rb:27:in</code>call' actionpack (4.1.2) lib/action_dispatch/middleware/flash.rb:254:in <code>call' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in</code>context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/cookies.rb:560:in</code>call' activerecord (4.1.2) lib/active_record/query_cache.rb:36:in <code>call' activerecord (4.1.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in</code>call' activerecord (4.1.2) lib/active_record/migration.rb:380:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:29:in</code>block in call' activesupport (4.1.2) lib/active_support/callbacks.rb:82:in <code>run_callbacks' actionpack (4.1.2) lib/action_dispatch/middleware/callbacks.rb:27:in</code>call' actionpack (4.1.2) lib/action_dispatch/middleware/reloader.rb:73:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/remote_ip.rb:76:in</code>call' actionpack (4.1.2) lib/action_dispatch/middleware/debug_exceptions.rb:17:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/show_exceptions.rb:30:in</code>call' railties (4.1.2) lib/rails/rack/logger.rb:38:in <code>call_app' railties (4.1.2) lib/rails/rack/logger.rb:20:in</code>block in call' activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in <code>block in tagged' activesupport (4.1.2) lib/active_support/tagged_logging.rb:26:in</code>tagged' activesupport (4.1.2) lib/active_support/tagged_logging.rb:68:in <code>tagged' railties (4.1.2) lib/rails/rack/logger.rb:20:in</code>call' actionpack (4.1.2) lib/action_dispatch/middleware/request_id.rb:21:in <code>call' rack (1.5.2) lib/rack/methodoverride.rb:21:in</code>call' rack (1.5.2) lib/rack/runtime.rb:17:in <code>call' activesupport (4.1.2) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in</code>call' rack (1.5.2) lib/rack/lock.rb:17:in <code>call' actionpack (4.1.2) lib/action_dispatch/middleware/static.rb:64:in</code>call' rack (1.5.2) lib/rack/sendfile.rb:112:in <code>call' railties (4.1.2) lib/rails/engine.rb:514:in</code>call' railties (4.1.2) lib/rails/application.rb:144:in <code>call' rack (1.5.2) lib/rack/lock.rb:17:in</code>call' rack (1.5.2) lib/rack/content_length.rb:14:in <code>call' rack (1.5.2) lib/rack/handler/webrick.rb:60:in</code>service' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:138:in <code>service' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/httpserver.rb:94:in</code>run' C:/Ruby200-x64/lib/ruby/2.0.0/webrick/server.rb:295:in `block in start_thread'

最佳答案

我真的怀疑这可能是您使用的端口不同。对于 HTTPS 应该是 443。试试这个:

def httpwork
    require "net/http"

    uri = URI("https://yourhost.com/yourpath")
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    request = Net::HTTP::Get.new("/yourpath")
    response = http.request(request)
end

关于ruby-on-rails - 使用 Ruby on Rails 的 HTTP GET 请求:OpenSSL::SSL::SSLError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666639/

相关文章:

ruby-on-rails - Rails 最佳实践 : Handling multiple relations in a single controller

ruby-on-rails - ECS 上的 Rails 迁移

ruby - 输入 Ruby 的货币验证

ruby-on-rails - 未定义的方法 `admin?' 为 nil :NilClass

ruby-on-rails - 更改 Rails 路由中的 id 参数

ruby-on-rails-3 - 在 Rails 3 中删除表和删除模型的最佳方法是什么?

javascript 渲染的 collection_select 输出 HTML 选项标签

ruby-on-rails - Rails 3 CSRF token 仍然提交

ruby - 将utf8mb4字符串保存到mysql

ruby - 让Guard在docker容器中运行