2010-09-26 119 views

回答

5

這是因爲函數是sock.use_ssl?,它返回一個布爾值,它不是一個setter方法。

它也似乎總是返回false。它在Net::HTTPS包中被覆蓋,如果你想要做任何SSL的東西,這可能是你應該使用的。

Here is the ruby doc

+0

你對這個網絡的任何進一步的信息:: HTTPS包。唯一的信息我可以找到建議我的代碼實際上是正確的設置Net :: HTTP使用HTTPS ...例如。 http://perfectionlabstips.wordpress.com/2008/11/03/how-to-open-a-https-session-in-ruby/ – Chris 2010-09-26 01:21:48

+0

@Chris - 我真的沒有更多的信息。如果你看看ruby-library文檔,他們會發現你正在閱讀的博客是不正確的。 – 2010-09-26 01:24:50

+0

反正什麼是ssl?服務器如何需要它? – Jwan622 2017-02-27 17:05:43

15

除了 '淨/ HTTP' 需要 '淨/ https' 時。然後將定義use_ssl=

require 'net/http' 
require 'net/https' 
connection = Net::HTTP::new 'www.example.com' 
connection.use_ssl = true 
+0

這對我不起作用。我得到:'需要':沒有這樣的文件加載 - 淨/ HTTPS(LoadError) – Jason 2011-02-04 14:37:59

0

如果你得到「'需要':沒有這樣的文件來加載 - 網/ HTTPS(LoadError)」,那是因爲你沒有安裝它。

如果你還沒有得到它,你可能需要在你的服務器上的ssl庫。例如,在Debian/Ubuntu上:

aptitude --assume-yes install libssl-dev 

如果您很不幸,您可能需要重新構建支持SSL的Ruby。如果手動構建,請將--with-openssl添加到配置選項。

然後,你需要的寶石:

gem install openssl-nonblock --no-ri --no-rdoc 

而現在,在我的經驗,至少,它應該工作...

2

看一看下面的代碼片段:

Net::HTTP.start(url.host, url.port) do |http| 
    http.use_ssl = true 
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    http.request(req) 
end 

您需要爲不在請求對象上的http對象設置use_ssl。我掙扎着這一點,並發現我的答案在這裏:https://github.com/nicksieger/multipart-post/issues/18

1

這裏是你如何能做到一個HTTPS GET請求:

require "net/https" 
require "uri" 

uri = URI.parse("https://secure.com/") 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Get.new(uri.request_uri) 

response = http.request(request) 

來源:http://www.rubyinside.com/nethttp-cheat-sheet-2940.html

相關問題