如何使用 LWP 发布数组形式

发布于 2024-11-18 01:05:39 字数 608 浏览 3 评论 0原文

我在创建一个可以使用 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 变量时,没有设置任何内容:(

I am having problems creating an array that I can pass as a form using LWP. Basic code is

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;
}

I guess I am not creating the form array correctly or using the wrong type as when I check the _POST variables in test.php nothing has been set :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苹果你个爱泡泡 2024-11-25 01:05:39

问题是,由于某种原因,您将表单值括在单引号中。您想要发送数据结构。例如:

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

您想要发送 %form 的哈希引用,而不是像您那样发送包含在数组引用中的 has 引用 ([ \%form ])。如果您想将数据作为数组引用发送,那么您只需使用[ %form ]`,它用哈希中的键/值对填充数组。

我建议您阅读 文档HTTP::Request::Common,POST 部分特别适用于更简洁的方法。

The problem is that for some reason you've enclosed your form values in single quotes. You want to send the data structure. E.g.:

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

You want to either send the hash reference of %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 ]` which populates the array with the key/value pairs from the hash.

I'd suggest that you read the documentation for HTTP::Request::Common, the POST section in particular for a cleaner way of doing this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文