最新消息:

使用 Mojo::UserAgent 的 Get 方法来模拟 Head 方法

Perl admin 3359浏览 0评论

在我们做一些测试, 接口和监控的服务时, 我们常常需要发送 Get 之类的请求, 去取得一些信息. 比如很常见的一个需求. 在监控的时候, 我们需要记录解析时间, header 取得的时间, 首字节的时间. 然后只取前 2M 断开之类, 各种小需求.

在这, 我来演示一下怎么用 Mojo::UserAgent 来实现其中一些需求.

my $ua = Mojo::UserAgent->new;

my $tx = $ua->build_tx(GET => 'http://www.php-oa.com');

$tx->res->content->on(body =>sub {
    my $single = shift;
    my $length = $single->headers->content_length || 0;
    my $stat = $tx->client_close;
});
$ua->start($tx);

Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

象上面这样, 使得原本的 Get 请求, 基本变得象 Head 一样的请求.因为有些服务就不支持 Head . 在这个地方, 也可以用来做首字节, 和 2M 以后立即断开之类来进行速度测试.

因为上面的 content 的写事件会触发 body , 这个 body 的事件是在 header 解析之后,  body 取得之前的事件. 所以可以在这做任何事情.

注意这个地方, 还是一样可以使用回调的, $ua->start($tx) , 也可以是 $ua->start($tx, sub {xxoo})

 

转载请注明:爱开源 » 使用 Mojo::UserAgent 的 Get 方法来模拟 Head 方法

您必须 登录 才能发表评论!