この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
はじめまして。
KBMJエンジニアのタジと申します。
ここでは仕事の中で出会った様々な問題をメモしていこうと思っています。
今回はRubyのライブラリであるNet/HTTPで、lzhファイルをDLする方法です。
Net/HTTPはその名の通りHTTPを扱うためのライブラリで、非常に多くの機能を持っています。
今回はその中でも一番簡単なWebページにアクセスして 内容を持ってくる機能を使いましょう。
では実際に作ってみます。
require ‘net/http’
Net::HTTP.version_1_2
File.open([ファイル名],”wb”) do |f|
Net::HTTP.start([ドメイン名], 80){|http|
f.print http.get([対象のファイルまでパス]).body
}
end
簡単に解説します。
まず頭にライブラリを読み込んだ後、バージョンを指定しています。
次にファイルを開いて保存したい名前のファイル名でファイルを開きます。
ファイルオープンの際に、書き込みモードとして”wb”を指定します。
この時、書き込みモードを指定するのにバイナリとして記述するという”b”を忘れないでください。
圧縮ファイルはバイナリファイルに分類されます。
次にNet::HTTP.startで接続を開始します。
引数として、対象のドメイン名とポート番号を指定します。
最後に取ってくるHTTPドキュメントのパスを指定して、中身を先ほど開いたファイルに書き込んでおしまいです。
ドメイン名とパスは少しややこしいですが、ドメインはURLの前半部のサーバ名を、パスはその中のファイルの位置を表しています。
例えるなら、「http://doruby.kbmj.com/beginner」というURLなら「http://」までが使用プロトコル、「doruby.kbmj.com」までがドメイン名、「beginner」がパスとなります。
解説は以上です。
もっとスマートなやり方もありそうなので、色々勉強していきたいと思います。
それではまた次回。