我有一个工具,可生成一些数据并将其打印到stdout。 在我的perl脚本中,我需要启动此工具并使用Post请求将生成的数据发送到http服务器。该工具会生成大量数据,将其保存在磁盘上并且只发送它可能非常耗时。所以我真的想要即时发送它,让我们说将stdout重定向到http post请求。 Content-Length应该不是什么大问题,因为我知道数据大小。
我已经尝试过使用回调:
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。 我也确信服务器支持multipart / form-data
有什么例子吗?有没有其他方法可以将stdout重定向到我的http post请求?
答案 0 :(得分:0)
谢谢大家,我决定创建一个套接字并手动编写数据。工作正常。