― Web Technology and Life ―

PerlでPOSTリクエスト時のinputととしてファイルを指定する方法

2014-01-12
HTTP::Reuqest::Commonのドキュメントにかいてあるんだけど、忘れやすかったりなので、メモ。あと、一応最新モジュール、HTTP::Body::Builderってのを使うとHTTP::Requestだけでいけるっぽいけど試していない。

Plackのウェブテストで

use Test::More;
use Plack::Test;
use Plack::Util;
use HTTP::Request::Common;

my $app = Plack::Util::load_psgi 'app.psgi';

test_psgi
    app    => $app,
    client => sub {
        my $cb = shift;

        my $res = $cb->(POST 'http://www.perl.org/survey.cgi',
               Content_Type => 'form-data',
               Content      => [ name  => 'Gisle Aas',
                                 email => 'gisle@aas.no',
                                 gender => 'M',
                                 born   => '1964',
                                 init   => ["$ENV{HOME}/.profile"],
                               ]
        );
    };

done_testing;

LWP::UserAgentとの連携で

use LWP::UserAgent;
use HTTP::Request::Common;

my $req = (POST 'http://www.perl.org/survey.cgi',
               Content_Type => 'form-data',
               Content      => [ name  => 'Gisle Aas',
                                 email => 'gisle@aas.no',
                                 gender => 'M',
                                 born   => '1964',
                                 init   => ["$ENV{HOME}/.profile"],
                               ]
);

my $ua = LWP::UserAgent->new();

my $res = $ua->request($req);

HTTP::Body::Builderを使えば楽ちんらしい

HTTP::Body::Builderってモジュールを使うと、HTTP::Requestだけでいけるっぽいんだけど、ちょっと試していない。書き方はわかりやすいっぽいんだけど、HTTP::Headersをnewしなきゃいけなくなるのがモヤっとというところだけどそのうち試してみたい

Perl update_at : 2014-01-12T17:22:30
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus