来自 Perl 中管道/文件句柄的内容正文



我有一个工具,可以生成一些数据并将其打印到标准输出。 在我的perl脚本中,我需要启动此工具并使用Post请求将生成的数据发送到http服务器。该工具会生成大量数据,将其保存在磁盘上并且仅发送数据可能非常耗时。所以我真的很想即时发送它,假设将标准输出重定向到 http post 请求。 内容长度应该不是什么大问题,因为我知道数据大小。

我已经尝试使用回调:

my @chunk = qw( foo bar baz );
my $req = HTTP::Request::StreamingUpload->new(
PUT      => 'http://example.com/foo.cgi',
callback => sub { shift @chunk },
headers => HTTP::Headers->new(
'Content-Type'   => 'text/plain',#and multipart/form-data
'Content-Length' => 9,
),
);
my $res = LWP::UserAgent->new->request($req);

并从 FH 读取:

open my $fh, '<', '/your/upload/requestbody' or die $!;
my $req = HTTP::Request::StreamingUpload->new(
PUT     => 'http://example.com/foo.cgi',
fh      => $fh,
headers => HTTP::Headers->new(
'Content-Length' => 9,
),
);
my $res = LWP::UserAgent->new->request($req);

但是由于某种原因,它对我不起作用,我收到错误500。 我也确定服务器支持多部分/表单数据

有没有例子?还有其他方法可以将标准输出重定向到我的 http 发布请求吗?

谢谢大家,我决定创建一个套接字并手动写入数据。工作正常。

最新更新