Adobe Creative Suite 出力対応店一覧をGoogle Mapsで表示させる(2)
スポンサードリンク
アドビのCS4対応プリントショップのリストのページから、Google Mapsに表示させるやつの2回目。
前回は、アドビのページから、HTMLを取得するところをやりました。
HTMLを取得するときに、キャッシュをして、コンテンツに変更がない場合は、キャッシュから使うような仕組みにしました。
さて、データを取得したかどうか、というのは、この後控えているジオコーディング(住所から経度緯度を取得する)をするかしないか、という判断に使うことになるので、重要です。
それを判断するためには、HTTPのステータスコードを使います。
ステータスコードというのは、404 Not foundとかいうところの404とかの数字で、サーバにURLを伝えてコンテンツの要求をしたとき、サーバからそのURLで示されるコンテンツがどうなっているかを知らせるために使うものです。
ステータスコード/意味
- 200 Found
- 404 Not Found
- 304 Not Modified
今回関係ありそうなのはこの程度。
それで、ステータスコードを表示するように改良したソースを以下に示します。
Filename: test2.pl
#!/usr/bin/perl # Filename: test2.pl use strict; use warnings; use Cache::File; use URI::Fetch; use Cwd; my $cwd = getcwd; my $cache = Cache::File->new( cache_root => "$cwd/cache", ); my $ua = new LWP::UserAgent; $ua->timeout(10); $ua->agent('DTPWiki.jp AdobeJpPrintShopMap/0.1 ' . '(+http://labo.dtpwiki.jp/printmap/)' ); my $res = URI::Fetch->fetch( 'http://www.adobe.com/jp/print/printshop/', Cache => $cache, UserAgent => $ua, ) or die URI::Fetch->errstr; my $html = $res->content; print $res->http_status."\n"; __END__
さてこれを実行してみて、ステータスコードを観察しましょう。
$ perl test2.pl 200 $ perl test2.pl 200 $
……ええと、想定では、2回目の実行は304が返ってくるはずなのですが。
調べてみたところ、アドビのプリントショップリストのページがあるURLに関しては、毎回必ず200を返すようになっていました。なんだって!
手持ちのWebサーバの静的コンテンツのURLを指定した場合は、ちゃんと1回目が200、2回目が304になるんです。
というわけで、このプログラムだと、コンテンツの更新があったかどうかを検出することができないということになりました。
ちょっと考えなくてはいけないようですね。(続く)
投稿 大野 義貴 [GoogleMaps] | 固定リンク |
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3017
コメントする