聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

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

2014-08-07 09:55 浏览: 1422090 次 我要评论(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})



网友评论已有0条评论, 我也要评论

发表评论

*

* (保密)

Ctrl+Enter 快捷回复