【问题标题】:Perl LWP::useragent capture server response headersPerl LWP::useragent 捕获服务器响应标头
【发布时间】:2023-03-04 21:26:01
【问题描述】:

我正在向网络服务器查询文档,并且我想捕获文档和相关的服务器响应标头(尤其是 Content-Type: ...)。我很难找出如何阅读标题。以下是我的 Perl 脚本中的一些片段,为了清楚起见,我留下了错误检查:

use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent( 'requiredCustomUserAgent' ); # I'm required to set a custom user agent
$imageData = $response->content;         # This is the received document

所以此时我可以检索 Web 文档,但我想知道服务器发送的 Content-Type 是什么。不幸的是,这并不总是与 bash 'file' 命令找到的 mime 类型相同。对于 .js 或 .css 文档,此文件方法会失败。

【问题讨论】:

标签: perl http-headers content-type


【解决方案1】:

http://search.cpan.org/perldoc?HTTP::Response

use LWP::UserAgent;
my $ua = new LWP::UserAgent;
my $response = $ua->get("http://google.co.uk");

print $response->headers()->as_string;
print $response->header('content-type');

【讨论】:

  • 请注意。实际上 $response->headers->as_string 应该会产生原始响应头,但它根本不会。所以应该小心这个输出。当您查看 Set-Cookie 值时,这一点尤其明显。
【解决方案2】:

请求返回的内容包含一个 HTTP::Headers 对象,因此请查看 HTTP::Headers 的文档以了解如何使用它。比如

my $response = $ua->request($req);       
my $headers = $response->headers();
my @header_field_names = $headers->header_field_names();
$logger->info("$_: ".$headers->header($_)) for grep {/Hogwarts/} @header_field_names;

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2011-06-02
    • 2020-01-11
    • 2012-09-05
    • 2016-06-16
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    相关资源
    最近更新 更多