Nếu bạn sử dụng phiên bản đầy đủ tính năng của LWP::UserAgent, thì câu trả lời được trả về là một thể hiện của HTTP::Response mà lần lượt có một thuộc tính là HTTP::Request. Lưu ý rằng đây là KHÔNG nhất thiết phải là cùng một HTTP :: Yêu cầu mà bạn đã tạo bằng URL gốc trong tập hợp URL của mình, như được mô tả trong tài liệu HTTP :: Response cho phương pháp truy xuất cá thể yêu cầu trong phiên bản phản hồi:
$ r-> yêu cầu ($ yêu cầu)
này được sử dụng để có được/thiết lập các thuộc tính yêu cầu. Thuộc tính yêu cầu là tham chiếu đến yêu cầu gây ra phản hồi này. Nó không phải là cùng một yêu cầu được chuyển đến phương thức $ ua-> request(), bởi vì có thể đã có chuyển hướng và ủy quyền thử lại ở giữa.
Khi bạn có đối tượng yêu cầu, bạn có thể sử dụng phương thức uri để tải URI. Nếu các chuyển hướng được sử dụng, URI là kết quả của việc theo chuỗi chuyển hướng.
Dưới đây là một kịch bản Perl, kiểm tra và xác minh, cung cấp cho bạn bộ xương của những gì bạn cần:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
my $ua; # Instance of LWP::UserAgent
my $req; # Instance of (original) request
my $res; # Instance of HTTP::Response returned via request method
$ua = LWP::UserAgent->new;
$ua->agent("$0/0.1 " . $ua->agent);
$req = HTTP::Request->new(HEAD => 'http://www.ecu.edu/wllc');
$req->header('Accept' => 'text/html');
$res = $ua->request($req);
if ($res->is_success) {
# Using double method invocation, prob. want to do testing of
# whether res is defined.
# This is inline version of
# my $finalrequest = $res->request();
# print "Final URL = " . $finalrequest->url() . "\n";
print "Final URI = " . $res->request()->uri() . "\n";
} else {
print "Error: " . $res->status_line . "\n";
}
Nguồn
2010-03-18 15:02:30
Đây là một dupe của http://stackoverflow.com/questions/2010366/how-can- i-find-the-final-url-sau-tất cả-chuyển hướng-trong-perl – Ether