2017-10-17 93 views
-1

我想我已經閱讀了與此主題相關的所有主題,但仍然沒有解決方案。 我使用:RubyMine Rails 5 Savon net_http Errno :: ECONNRESET SSL_Connect

  • 的RubyMine 2017年2月4日
  • 紅寶石2.4.1
  • 的Rails 5.1.0
  • 薩翁

當我在我的Rails控制檯薩翁連接到服務器,我收到以下錯誤:

Errno :: ECONNRESET:現有連接被強制關閉遠程主機。 - 所以SSL_connect

這是我的代碼使用方法:

wsdlUrl = 'https://some.server.com/ws/schema/Echo.wsdl' 
licenseKey = '1234567890' 

client = Savon.client(wsdl: wsdlUrl, 
        log:true, 
        ssl_verify_mode: :none) 

response = client.call(:echo, 
         message: { licenseKey: licenseKey, 
            value: 'Hello World'}) 

puts "\nResult \"#{response.body[:echo_response][:value]}\" was returned" 

我曾嘗試以下操作:

  • 下載CA-bundle.crt並添加到我的系統環境(並重新啓動
    一切)
  • 更新了我的寶石
  • 重新安裝Ruby,Rails和RubyMine
  • 創建一個新的應用程序,並複製代碼
  • 補充說: 「需要的OpenSSL」 的代碼
  • 添加以下代碼:

    require 'open-uri' 
    require 'net/https' 
    module Net 
        class HTTP 
        alias_method :original_use_ssl=, :use_ssl= 
        def use_ssl=(flag) 
         path = (Rails.env == "development") ? "lib/ca-bundle.crt" : "/usr/lib/ssl/certs/ca-certificates.crt" 
         self.ca_file = Rails.root.join(path).to_s 
         self.verify_mode = OpenSSL::SSL::VERIFY_PEER 
         self.original_use_ssl = flag 
        end 
        end 
    end 
    

就沒有什麼工作了。

奇怪,這是這樣的:

當我運行的軌道(發展)控制檯,我輸入上面的代碼,我得到了所以SSL_connect錯誤。當我在RubyMine中更改一些代碼時,不要重新啓動控制檯,我不會收到任何錯誤。當我重新運行Rails控制檯時,我再次遇到ssl-connect錯誤。

有誰知道在哪裏可以看

編輯1: 我發現,如果我把上面的代碼文件(echo.rb)當我打電話文檔中的終端,因爲它會在工作:紅寶石echo.rb

+0

它是否可以通過腳本工作? –

+0

當我從終端調用腳本時它確實有效。我把代碼放在一個文件echo.rb中。當我運行ruby echo.rb時它會工作... – Jerry

+0

對不起,無法幫助Rails。 –

回答

0

對於所有有同樣的問題:

第一

$ gem install 'http' (or add gem 'http' to your Gemfile and install) 

然後在代碼中添加此:

require 'http' 
相關問題