1

我有一个小问题。我正在使用 LWP::useragent 并发布到另一个脚本。在该脚本中,我正在对 json 字符串和匿名数组中传递的多个文件执行一些逻辑。一切都很顺利,直到我尝试将要传递的多个文件推送到一个数组中并将其作为匿名数组中的数组引用传递。

open (IMAGE, "./flower.jpg") or die "$!";
open (IMAGE2, "./fw4.pdf") or die "$!";

$raw_string1 = do{ local $/ = undef; <IMAGE>; };
$raw_string2 = do{ local $/ = undef; <IMAGE2>; };


my @file_array;

push(@file_array, $raw_string1);
push(@file_array, $raw_string2);

my $array_ref = \@file_array;

my $data = [json_string => $json, file_array => $array_ref];
my $ua = LWP::UserAgent->new;
$res = $ua->request(POST($url, $data));

在 catch 脚本中,我读取了从匿名传递到散列的参数。我可以毫无问题地访问 json 字符串传递,例如:

my $json_post = $params{'json_string'};

然后我对它进行解码并用它做我想做的事,一切都很好。所以我想我可以像这样访问数组引用:

 my $array_ref = $params{'file_array'};
 my @array = @$array_ref;

也试过

my @array = @{$array_ref};
4

1 回答 1

2

您只能通过套接字发送字节流。其他任何东西都必须序列化为字节流并在远程端反序列化。

您选择使用 application/x-www-form-urlencoded 协议进行序列化。它只能序列化字符串的键值对。然而你试图传递一个参考

您需要以服务器期望的方式将数组的内容序列化为字符串。

于 2013-12-24T00:36:56.293 回答