2012-08-22 79 views
3

我使用Ruby 1.8.7和Rails 2.3.11,薩翁1.1.0,2.5.0芥末,httpi 1.1.1和2.2.7的HttpClient薩翁的OpenSSL :: SSL :: SSLError

每當我跑我的腳本:

#!/usr/bin/env ruby 
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 
require 'savon' 

client = Savon::Client.new do |wdsl, http| 
     wdsl.document = 'https://www.atmosfair.de:8443/service/AtmosfairEmissionService3?wsdl' 
     http.auth.ssl.verify_mode = :none 
     http.auth.basic "user", "password" 
end 

client.request :wdsl, "getFlightEmission" do 
    soap.body = { 
     :departure => "VIE", 
     :arrival => "DUB" 
    } 
end 

我得到這個:

HTTPI執行HTTP GET使用HttpClient的適配器 /usr/local/rvm/gems/ruby-1.8.7-p370/gems/ httpclient-2.2.7/lib/httpclient/session.rb:300:在 `connect'中:SSL_connect返回ed = 1 errno = 0 state = SSLv2/v3讀取服務器 hello A:sslv3警報意外消息(OpenSSL :: SSL :: SSLError)

from /usr/local/rvm/gems/ruby-1.8.7- p370/gems/httpclient-2.2.7/lib/httpclient/session.rb:300:ssl_connect' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient/session.rb:757:in從/usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7連接' /lib/httpclient/timeout.rb:131:in timeout' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient/session.rb:748:in從/usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient/session.rb連接' : 606:在query' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient/session.rb:161:in查詢' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient.rb:1070:in do_get_block' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient.rb:873:in do_request' from/usr /本地/ RVM /寶石/紅寶石1.8.7-P370 /寶石/ HttpClient的-2.2.7/lib中/ httpclient.rb :966:protect_keep_alive_disconnected' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient.rb:872:in do_request' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient.rb:760:in request' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpclient-2.2.7/lib/httpclient.rb:663:in從/ usr獲得' ' /local/rvm/gems/ruby-1.8.7-p370/gems/httpi-1.1.1/lib/httpi/adapter/httpclient.rb:24:in get' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpi-1.1.1/lib/httpi/adapter/httpclient.rb:64:in do_request' from/usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpi-1.1.1/lib/httpi/adapter/httpclient.rb:23:get' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpi-1.1.1/lib/httpi.rb:86:in從/usr/local/rvm/gems/ruby-1.8.7-p370得到' /gems/httpi-1.1.1/lib/httpi.rb:193:in with_adapter' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/httpi-1.1.1/lib/httpi.rb:84:in從/usr/local/rvm/gems/ruby-1.8.7-p370/gems/savon-1.1.0/lib/獲得' savon/wasabi/document.rb:34:在resolve_document' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/savon-1.1.0/lib/savon/wasabi/document.rb:15:in xml' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/wasabi-2.5.0/lib/wasabi/document.rb:131 :在parse' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/wasabi-2.5.0/lib/wasabi/document.rb:118:in解析器' from /usr/local/rvm/gems/ruby-1.8.7-p370/gems/wasabi-2.5.0/lib/wasabi/document.rb:61:in`soap_actions' from script/atmosfair.rb:28

鑑於了SoapUI給我:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Body> 
     <ns1:FlightEmission xsi:type="ns1:FlightEmissionData" xmlns:ns1="http://www.atmosfair.de/2009/07/travel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
     <CO2>0.19</CO2> 
     <offset>5.0</offset> 
     <distance>1733</distance> 
     <CO2PerPkm>0.0</CO2PerPkm> 
     <CO2InCriticalAltitudes>0.13</CO2InCriticalAltitudes> 
     <CO2RFI2>0.32</CO2RFI2> 
     <CO2RFI27>0.41</CO2RFI27> 
     <CO2RFI3>0.45</CO2RFI3> 
     <CO2RFI4>0.59</CO2RFI4> 
     <keroseneConsumption>0.06</keroseneConsumption> 
     <keroseneConsumptionInCriticalAltitudes>0.04</keroseneConsumptionInCriticalAltitudes> 
     <specificFuelConsumptionAverage>4.31</specificFuelConsumptionAverage> 
     <offsetCO2RFI2>8.0</offsetCO2RFI2> 
     <offsetCO2RFI27>11.0</offsetCO2RFI27> 
     <offsetCO2RFI3>11.0</offsetCO2RFI3> 
     <offsetCO2RFI4>15.0</offsetCO2RFI4> 
     </ns1:FlightEmission> 
    </soapenv:Body> 
</soapenv:Envelope> 

任何想法,我做錯了嗎?

回答

0

我解決了這個問題,通過遏制代替的HttpClient:

#!/usr/bin/env ruby 
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) 
require 'iconv' 
require 'curb' 
require 'savon' 

HTTPI.adapter = :curb 

    client = Savon::Client.new do |wdsl, http| 
     http.headers = { "Content-Length" => "0", "Connection" => "Keep-Alive" } 
     http.auth.basic "user", "password" 
     wdsl.document = 'https://www.atmosfair.de:8443/services/AtmosfairEmissionService3?wsdl' 
    end 

    client.http.auth.ssl.verify_mode = :none 

    response = client.request :wdsl, "getFlightEmission" do 
     soap.body = { 
     :departure => "VIE", 
     :arrival => "DUB" 
    } 
end 

現在一切正常!

相關問題