gpt4 book ai didi

perl - 如何使用 AnyEvent::HTTP 只获取页面的一部分?

转载 作者:行者123 更新时间:2023-12-05 00:52:06 24 4
gpt4 key购买 nike

有必要只读取页面的一部分(n 字节)并关闭连接,如何在 AnyEvent::HTTP 上执行此操作?

最佳答案

on_body当块到达时被重复调用。从 on_body 返回 false终止下载。

sub my_http_request {
my $cb = pop;
my ($method, $url, %args) = @_;

croak("Unsupported: on_body") if $args{on_body};
croak("Unsupported: want_body_handle") if $args{want_body_handle};

my $max_to_read = delete($args{max_to_read});

my $data;
return http_request(
$method => $url,
%args,
on_body => sub {
#my ($chunk, $headers) = @_;
$data .= $_[0];
return !defined($max_to_read) || length($data) < $max_to_read;
},
sub {
my (undef, $headers) = @_;
$cb->($data, $headers);
},
);
}

使用 my_http_request就像 http_request ,除了它接受一个可选的 max_to_read范围。

例如,
my $cb = AnyEvent->condvar();
my_http_request(
GET => 'http://...',
...
max_to_read => ...,
$cb,
);

my ($data, $headers) = $cb->recv();

例如,
my $done = AnyEvent->condvar();
my_http_request(
GET => 'http://...',
...
max_to_read => ...,
sub {
my ($data, $headers) = @_;
...
$done->send();
},
);

$done->recv();

关于perl - 如何使用 AnyEvent::HTTP 只获取页面的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43355138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com