WWW::Mechanizeを使うとリダイレクト処理とかよしなにやってくれて便利。
しかし、うまくクエリパラメータが渡されてないとかになってくると、やっぱり間の状況もしっかり見たくなる。
つまり、curl -Lv URL みたいに、リダイレクトを含めたリクエストログを出したかった。
my $m = WWW::Mechanize->new(); $m->add_handler("request_send", sub { my $req = shift; say "--- REQ -----------------------------------------------"; say $req->as_string; undef; # 自前でHTTP::Responseを返すと実際のリクエストが飛ばなくなる。なのでundefを返しておく。 }); $m->add_handler("response_done" => sub { my $res = shift; say "--- RES -----------------------------------------------"; say $res->message; say $res->headers->as_string; undef; }); $m->get('http://wwwwwwwwwwwwwwwwwwwwww')
LWP::UserAgentはhandlerをいくつか持ってるので、その処理に合わせてコールバックを設定することができる。
これを利用して、リクエストの前後に処理を仕込むことができる。
・・・2016年らしからぬ記事を書いてる気がする。