Tôi có một tập lệnh có thể thực hiện một số cuộc gọi đến một dịch vụ với các địa chỉ IP khác nhau. Mã của tôi hoạt động khi tôi không đặt bất kỳ ip cho các cuộc gọi của tôi, tôi đã viết một hàm để gán một địa chỉ IP cho các đối tượng trước khi thực hiện cuộc gọi, nhưng nó sẽ trả về một lỗi:Tại sao tôi không thể gán ip cho LWP :: UserAgent?
Can't locate object method "local_address" via package "LWP::UserAgent"
Đây là cấu trúc chức năng của tôi:
#!/usr/bin/perl -w
use LWP::UserAgent;
use HTTP::Headers;
use HTTP::Request::Common;
use HTTP::Cookies;
use URI::Escape;
use HTML::LinkExtor;
# set user agent object values
my $ua = new LWP::UserAgent;
$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6');
push @{ $ua->requests_redirectable }, 'POST';
$ua->cookie_jar({});
sub set_caller_ip {
my($set_ip_address) = @_;
$ua->local_address("$set_ip_address");
return 1;
}
sub test_caller_ip {
my $req = new HTTP::Request('GET', 'http://whatismyip.org/');
$req->headers->push_header('Connection','Keep-Alive');
$req->headers->push_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8');
my $res = $ua->request($req) or die "$!";
return $res->content();
}
Và đây là cách mà tôi gọi họ là:
set_caller_ip($caller_ip_address);
$caller_ip_tested = test_caller_ip();
print "\$caller_ip_tested=".$caller_ip_tested."\n";die;
bạn có biết vấn đề là gì ?!
Cảm ơn sự giúp đỡ của bạn trước!
nhờ gợi ý! điều đó thực sự có thể !!! hãy để tôi kiểm tra phiên bản! – Monica
bạn hoàn toàn đúng ... Cảm ơn người đàn ông! Tôi đã đấu tranh với vấn đề này trong 3 giờ ... Và thực ra tôi không phải là quản trị viên của sys nên bây giờ tôi nên học cách nâng cấp mô-đun này !!! anyway ... cảm ơn sự giúp đỡ của bạn :) – Monica
@Monica, khi bạn thấy thông báo 'Không thể định vị đối tượng phương thức', về cơ bản có 3 tùy chọn: bạn đã viết sai chính tả tên phương thức, bạn đã có loại đối tượng sai hoặc phiên bản của mô-đun không khớp với tài liệu bạn đang đọc (và API đã thay đổi). – cjm