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 に答える