使用Furl时的基本URI

时间:2016-01-03 16:54:51

标签: perl

我已查看文档https://metacpan.org/pod/Furl 但是在使用Furl时我怎么能找到网站基础URI?

使用LWP很容易:

my $res = $ua->get($url);
my $base_uri = $res->base;

基函数尝试从此标题字段中获取值

my $base = (
         $self->header('Content-Base'),        # used to be HTTP/1.1
         $self->header('Content-Location'),    # HTTP/1.1
         $self->header('Base'),                # HTTP/1.0
     )[0];

但我不能对Furl做同样的事。

1 个答案:

答案 0 :(得分:3)

首先:你似乎想在$ base做一个匿名数组,因此,它应该是:

my $base = [ $res->header('header1'), $res->header('header2'), $res->header('header3') ];

因为你刚刚保存了第一个标题的代码(在你的情况下是Content-Base)并且对最后两个没有做任何处理,你可以使用 Data :: Dumper 来检查它。 也许这就是为什么它不起作用。

第二:但是,在阅读了Furl模块的代码后,我发现没有公开的方法来获取url的基础,所以除非你也在检查你自己的代码中<base> html标签和你以前用过的uri请求你的回复(即使重定向后),你的代码可能会破坏一些旧的网站。 HTTP :: Response 执行此检查,这就是LWP使用的内容。

基础URI层次结构的引用:HTTP::Response - HTTP style response message