ホーム > ブログ > タグ : Ruby

Net::HTTPライブラリを使用してSSL下のWEBページを取得した際に、
以下のような警告文がでます。

warning: peer certificate won't be verified in this SSL session

これを停めるには、
Net::HTTPのインスタンスメソッドverify_modeに下記の定数を指定します。

サンプルコード:
require 'net/https'
https = Net::HTTP.new("secure.example.com", 443)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_NONE
https.start { |w|
  response = w.get('/')
  puts response.body
}

※この場合、https.use_ssl = trueの指定は必須です。

参考URL:
net/https – Rubyリファレンスマニュアル

実行環境
Ruby 1.8.7
CentOS 5.3

RubyでWEBからドキュメントを取得する方法です。

Net::HTTPライブラリを使います。

サンプルコード:

require 'net/http'
http = Net::HTTP.new('www.example.com', 80)
http.open_timeout = 10
http.read_timeout = 60
http.start do
  response = http.get('/index.html')
  puts response
end

※Net::HTTPのソースを覗くとopen_timeoutのデフォルトはnilとされているので、
上記のように適当な値を入れておいた方が無難です。

open_timeout、open_timeoutについてはマニュアルを参照してください。

open_timeout
open_timeout=(n)
接続時に待つ最大秒数。この秒数たってもコネクションが開かなければ例外 TimeoutError を発生します。

read_timeout
read_timeout=(n)
読みこみ (read(1) 一回) でブロックしてよい最大秒数。この秒数たっても読みこめなければ例外 TimeoutError を発生します。


実行環境
Ruby 1.8.7
CentOS 5.3

2010年02月04日

Ruby LibXML-Ruby

LibXML-Rubyはgemでインストールできます。

# gem install libxml-ruby

※LibXML-Rubyのインストールには、以下のライブラリが必要です。
インストールされていない場合は、別途インストールします。
libm
libz
libiconv
libxml2

簡単に使い方を紹介します。
require 'rubygems'
require 'xml/libxml'

str=<<EOS
<?xml version="1.0" encoding="UTF-8" ?>
<wine>
  <item>
    <rank>1</rank>
    <country>フランス</country>
    <amount>5,329,449</amount>
  </item>
  <item>
    <rank>2</rank>
    <country>イタリア</country>
    <amount>5,056,648</amount>
  </item>
  <item>
    <rank>3</rank>
    <country>スペイン</country>
    <amount>3,934,140</amount>
  </item>
</wine>
EOS

doc = XML::Document.string(str) 

# <country>の要素を取り出してみます。
doc.root.find('/wine/iem/country').each do |country|
  puts country.content
end

出力結果:
フランス
イタリア
スペイン

LibXML-Rubyの使い方は下記ブログが参考になります。
LibXML-Rubyメモ。 – マルニカ。

詳細はrdocをご欄下さい。
LibXML Ruby