読者です 読者をやめる 読者になる 読者になる

hellkite 日記と雑記とメモ。

Shiki Kazamaの駄文と音楽と、時々技術な感じ

Proxyサーバを経由してURLをGETする

Ruby

スポンサーリンク


じゃ、どうかく?おるぐ - Twisted Mind
Voluntasさんが紹介していた、どう書く?org
面白いなーと思ってたんですが、せっかくなので投稿されてるプログラムを実行させてみようかと。
とりあえず、題材はこれ。
doukaku.org - 
すると、あっさりハマル。

C:/Program Files/ruby/lib/ruby/1.8/net/http.rb:560:in `initialize': 
Bad file descriptor - connect(2) (Errno::EBADF)

あらら?Proxyサーバを経由しないといけないんだな。


リファレンスを確認したらNet::HTTP.Proxyを実行すればいいようで。

#! /user/bin/env ruby

require 'net/http'
Net::HTTP.version_1_2   #おまじない

$proxy_addr = '#PROXY_ADDR#'
$proxy_port = #PORT#

Net::HTTP::Proxy($proxy_addr, $proxy_port).get_print 'ja.doukaku.org',
  '/feeds/comments/'


文字化けするけど、とりあえずデータを拾ってはいるみたい。
文字化けか・・・どうすればいいんだろう。苦手なんだよなぁ(´・ω・`)*1


そういえば、RubyGemsも同じようなメッセージが出てとまっていたような?Proxyサーバ経由でアクセスさせるにはどうすればいいんだ?
と思って調べてみると・・・環境変数に入れてやればいいらしい。

set http_proxy=http://PROXY_ADDRESS:PROXY_PORT*2

その後、gem list --remoteで実行させてみたら無事に動いた。面白そうなGemsがわらわらと!
この件については、こちらを参考にさせていただきました。
http://d.hatena.ne.jp/shingotada/20060823/1158069744


ちなみに、この環境変数を指定してやると素のNet::HTTPクラスでもアクセス可能みたい。
めでたしめでたし*3

*1:この辺?使い方がわからないけど・・・(汗)Rubyist Magazine - 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv

*2:http://を忘れてて1時間ほど悩んだ・・・

*3:文字化けを除く