« 2008年01月13日 | メイン | 2008年01月15日 »

2008年01月14日

LWP::UserAgent で長いヘッダを受け取る方法

Simple FON Maps を改良していたときに発生した問題。現在の FON Maps では、座標情報を X-Json というヘッダに格納して通信しています。

my $ua  = LWP::UserAgent->new(keep_alive => 1);
my $data = $ua->head($url)->header('X-Json');

このコードで概ねデータを取得できていたのですが、たまに、データを取得できていませんでした。

warn($ua->head($url)->status_line);

通信で何らかのエラーが発生している可能性があり、デバッグ用にコードを追加。

500 Line too long (limit is 4096)

どうやら、ヘッダの長さが長すぎるようです。

The "500 Line too long (limit is 4096)" is generated internally in Net::HTTP when one of the header lines of the response are longer than this.

日本語圏では、このエラーに関する対処方法が見つからなかったのですが、公式なメーリングリストで対処方法が記載されていました。

my $ua  = LWP::UserAgent->new(keep_alive => 1);
push(@LWP::Protocol::http::EXTRA_SOCK_OPTS, MaxLineLength => 16 * 1024);

MaxLineLength に値を追加して解決。データを取得できないときもエラーログに残っていなかったため、気付くのが遅くなりました…。

【関連情報】
・Re: Fw: LWP Problem: Error: 500 Line too long (limit is 4096)
 http://www.mail-archive.com/libwww@perl.org/msg03754.html

02:59 | コメント (0) | トラックバック | Programming

反転生活を改善するぞ

たぶん。ということで、昨日(13日)の食事内容です。

昼は、パンを食べました。北海道云々のパン。オーブンとエアコンを同時に利用したら、ブレーカーが落ちました。

夜は、久しぶりに元気寿司で寿司を食べる。はま寿司とおたる寿しが混んでいたため。

起きたら夕方という生活を繰り返しています。

自宅 (昼)
 パン
元気寿司 (夜)
 寿司

02:47 | コメント (2) | トラックバック | Meal