0
我有一个用于文件下载的特例。我需要为大文件进行分块下载,并且需要在下载之前将参数传递给CGI脚本。LWP GET大文件下载
它确实是一个REST接口。我在互联网上搜索了很多东西,下载部分有很多东西,参数部分有很多东西,但是当我把它们放在一起时,我会遇到错误。另外请注意,我以类似的方式进行POST,并且它工作正常。这里是我的代码剪断:
# $filename, $target, $url, $bs, etc. are all set...
my $bytes_received = 0;
open (FH, ">", "$filename") or $logger->error("Couldn't open $filename for writing: $!");
my $ua = LWP::UserAgent->new();
my $res = $ua->get(
$url,
':content_cb' => \&callback,
'Content' => {
"api" => 'olfs',
"cmd" => 'rfile',
"target" => $target,
"bs" => $bs});
print $logger->info("$bytes_received bytes received");
sub callback{
my($chunk, $res) = @_;
$bytes_received += length($chunk);
print FH $chunk;
}
下面是错误:
Not a SCALAR reference at /usr/local/share/perl5/HTTP/Message.pm line 163.
at /usr/local/share/perl5/HTTP/Message.pm line 163
HTTP::Message::add_content('HTTP::Request=HASH(0x1956a88)', 'HASH(0x7fdfda565e88)') called at /usr/local/share/perl5/HTTP/Request/Common.pm line 111
HTTP::Request::Common::_simple_req(undef, undef) called at /usr/local/share/perl5/HTTP/Request/Common.pm line 20
HTTP::Request::Common::GET('http://10.0.0.15:8084/cgi-bin/olss.cgi', 'Content', 'HASH(0x7fdfda565e88)') called at /usr/local/share/perl5/LWP/UserAgent.pm line 410
LWP::UserAgent::get('LWP::UserAgent=HASH(0x191a220)', 'http://10.0.0.15:8084/cgi-bin/olss.cgi', ':content_cb', 'CODE(0x1845818)', 'Content', 'HASH(0x7fdfda565e88)') called at ./olfs_get.pl line 72
Debugged program terminated. Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.
DB<3> print oct("764")
500
DB<4>
有趣,所以我用“内容'当我POST和我的服务器CGI使用$参数 - > {'字段'}来访问这些内容的一部分参数。当我GET并尝试添加'Content'时,没有这样的头部,所以我得到错误。所以我想知道如何在我放置GET请求时访问我的CGI中的$ field_name键值对?我想我应该做一个测试并转储所有内容。 – tradetree
我在服务器CGI端做了一个测试,并且在转储中找不到任何我的键/值对。我正在做“我的$查询=新的CGI;我的$ rcvd_data = Dumper($查询);打印$ rcvd_data,并且我得到:$ VAR1 = bless('{012,'.parameters'=> [], 'use_tempfile'= > 1, '.charset'=> 'ISO-8859-1', '.fieldnames' => {}, 'PARAM'=> {}, ' .header_printed” => 1, '逃离' => 1 },'CGI'); – tradetree
这是一个问题吗?剩下的部分在哪里?(代码,期望的行为等)? – ikegami