I'm trying to download a file using HTTP::UserAgent
, but all my attempts thus far have ended with the following error.
Malformed UTF-8
I've tried to use the getstore
sub, exported in the :simple
subset.
getstore($upstream ~ %module<link>, $dist.absolute);
And using the HTTP::UserAgent
class directly.
my $ua = HTTP::UserAgent.new;
$dist.spurt: $ua.get($upstream ~ %module<link>).content;
While looking through the source code of the module, I found a :bin
argument for .get
, so naturally I've tried that as well.
$dist.spurt: $ua.get($upstream ~ %module<link>, :bin).content;
But even with the :bin
argument I get the Malformed UTF-8
error.
How would I go about downloading a binary file using HTTP::UserAgent
?
EDIT: To give some more context, the $dist
is just another IO::File
object, created with tempdir.IO.add("dist.tar.gz")
. I've also tried to .open
this file and .spurt
to the IO::Handle
instead of the IO::File
, but this returned the same error. Adding :bin
to the $dist.open
call does also not seem to have an effect.
with ($dist.open(:w)) {
LEAVE { .close }
.spurt: $ua.get($upstream ~ %module<link>, :bin).content;
}
The URL I'm working with in this particular case is https://cpan.metacpan.org/authors/id/V/VR/VRURG/Perl6/OO-Plugin-v0.0.5.tar.gz
, but it doesn't seem to be limited to this URL only.
try the :bin option for the spurt routine. This works for me (with 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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With