ルモーリン

LWP::UserAgentでフォームをポストする

投稿:2017-03-01

ドキュメントに書かれている方法なのにネット(*)で見かけなかったので(そーゆーの大好き♪)。
*:すみません、日本語のブログだけです。ごめんなさい。
  1. フォームのリクエストを作る
  2. ポストする
なぜ一発でポストしないのだ? なんかPerlっぽくないなー。 検索して見つかるブログがどれもこの方法だから元ネタがあるのかも。
リクエストを作ってポスト LWP - Google 検索
実際に私のプロジェクト共有ライブラリに書いてあるコードをコピペしました。 このライブラリはコメントを見てお分かりのように際どい機能なので非公開です。
# 動画ファイルをアップロード
$res = $self->ua->post("http://www.upload.nicovideo.jp/",
	Content_Type => "form-data",
	Content => [
		filename => [Encode::encode $self->{system_code}, $filename],
		MAX_FILE_SIZE => $max_file_size,
		cmd => $cmd,
		uniq_id => $uniq_id,
		screen => $screen,
		INVALID_EXTENSIONS => $inv_ext,
		async => $async,
	],
);
LWP::UserAgent - search.cpan.org

$ua->post( $url, $field_name => $value,... Content => $content )

This method will dispatch a POST request on the given $url, with %form or @form providing the key/value pairs for the fill-in form content. Additional headers and content options are the same as for the get() method.
This method will use the POST() function from HTTP::Request::Common to build the request. See HTTP::Request::Common for a details on how to pass form content and other advanced features.