如何使用LWP发布数组表单

时间:2011-06-30 14:01:42

标签: perl lwp

我在创建一个可以使用LWP作为表单传递的数组时遇到问题。基本代码是

my $ua = LWP::UserAgent->new();
my %form = { };
$form->{'Submit'} = '1';
$form->{'Action'} = 'check';
for (my $i=0; $i<1; $i++) {
    $form->{'file_'.($i+1)} = [ './test.txt' ];
    $form->{'desc_'.($i+1)} = '';
}

$resp = $ua->post('http://someurl/test.php', 'Content_Type' => 'multipart/form-data'
, 'Content => [ \%form ]');

if ($resp->is_success()) {
    print "OK: ", $resp->content;
}
} else {
    print $claimid->as_string;
}

我想我没有正确创建表单数组或使用错误的类型,因为当我检查test.php中的_POST变量时,没有设置任何内容:(

1 个答案:

答案 0 :(得分:0)

问题在于,由于某种原因,您已将表单值括在单引号中。您想发送数据结构。 E.g:

$resp = $ua->post('http://someurl/test.php', 
                  'Content_Type' => 'multipart/form-data',
                  'Content'      => \%form);

您希望发送%form, not the has reference contained within an array reference as you had ( [\%form] ). If you had wanted to send the data as an array reference, then you'd just use [%form]`的哈希引用,该哈希引用使用哈希中的键/值对填充数组。

我建议您阅读documentation for HTTP::Request::Common,特别是POST部分,以便更清洁地执行此操作。