Как разместить форму массива с использованием LWP - PullRequest
0 голосов
/ 30 июня 2011

У меня проблемы с созданием массива, который я могу передать как форму, используя 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;
}

Полагаю, я неправильно создаю массив форм или использую неправильный тип, поскольку при проверке переменных _POST в test.php ничего не было установлено: (

1 Ответ

0 голосов
/ 30 июня 2011

Проблема в том, что по какой-то причине вы заключили значения формы в одинарные кавычки.Вы хотите отправить структуру данных.Например:

$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] `, которая заполняет массив парами ключ / значение из хеша.

Я бы посоветовал вам прочитать документацию для HTTP :: Request :: Common , в частности, раздел POST, для более чистого способа сделать это.

...