2017-08-16 39 views
2

我有一個工具,它生成一些數據並將其輸出到stdout。 在我的Perl腳本中,我需要啓動這個工具,並使用Post請求將生成的數據發送到http服務器。該工具會生成大量數據,並且將其保存在磁盤上可能非常耗時並且只能發送它。所以我真的想發送它,讓我們說重定向標準輸出到http post請求。 內容長度不應該是一個大問題,因爲我知道數據大小。HTTP Post。 Perl中管道/文件句柄的內容體

我已經嘗試過使用回調:

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

錯誤500意味着您發佈的URL不起作用 - Web服務器日誌中有哪些錯誤? –

+0

我沒有服務器日誌。 – Bobby

回答

0

謝謝大家,我決定創建一個套接字並手動寫入數據。工作正常。