如何使用HTTP :: UserAgent下载二进制文件

Tyi*_*yil 6 http perl6 raku

我正在尝试使用下载文件HTTP::UserAgent,但到目前为止我的所有尝试都以下列错误结束.

Malformed UTF-8
Run Code Online (Sandbox Code Playgroud)

我试图使用getstoresub,在:simple子集中导出.

getstore($upstream ~ %module<link>, $dist.absolute);
Run Code Online (Sandbox Code Playgroud)

HTTP::UserAgent直接使用该类.

my $ua = HTTP::UserAgent.new;

$dist.spurt: $ua.get($upstream ~ %module<link>).content;
Run Code Online (Sandbox Code Playgroud)

在查看模块的源代码时,我找到了一个:bin参数.get,所以我自然也尝试过.

$dist.spurt: $ua.get($upstream ~ %module<link>, :bin).content;
Run Code Online (Sandbox Code Playgroud)

但即使有了这个:bin论点我也得到了Malformed UTF-8错误.

我如何使用下载二进制文件HTTP::UserAgent

编辑:为了给出一些更多的上下文,$dist它只是另一个IO::File用它创建的对象tempdir.IO.add("dist.tar.gz").我也试过.open这个文件,并.spurtIO::Handle代替IO::File,但是这回同样的错误.添加:bin$dist.open呼叫似乎也没有效果.

with ($dist.open(:w)) {
    LEAVE { .close }
    .spurt: $ua.get($upstream ~ %module<link>, :bin).content;
}
Run Code Online (Sandbox Code Playgroud)

我在这种特殊情况下使用的URL是https://cpan.metacpan.org/authors/id/V/VR/VRURG/Perl6/OO-Plugin-v0.0.5.tar.gz,但它似乎并不仅限于此URL.

Val*_*kas 2

尝试使用 :bin 选项来执行突发例程。这对我有用(使用http)

'/tmp/test.tar.gz'.IO.spurt( $ua.get('http://cpan.metacpan.org/authors/id/V/VR/VRURG/Perl6/OO-Plugin-v0.0.5.tar.gz').content, :bin);
Run Code Online (Sandbox Code Playgroud)