use strict; use Log::Log4perl qw(:easy get_logger); use LWP::UserAgent; use HTTP::Request; use HTTP::Request::Common; use HTTP::Response; use HTTP::Status; $| = 1; my $ua = LWP::UserAgent->new; $ua->add_handler("request_send", sub { log_it("Request: ".shift->dump); return }); $ua->add_handler("response_done", sub { my $rsp = shift; my @red = $rsp->redirects; my $r; foreach $r (@red) {log_it("Response redirect: ".$r)}; log_it("Response last request: ".$rsp->request->uri); log_it("Response headers: ".$rsp->headers_as_string); log_it("Response code: ".$rsp->code); my $msg = status_message($rsp->code); log_it("Response status: ".$msg) if defined $msg; log_it("Response status: ".$rsp->status_line); return }); # Define configuration my $conf = q( log4perl.logger = TRACE, FileApp, ScreenApp log4perl.appender.FileApp = Log::Log4perl::Appender::File log4perl.appender.FileApp.filename = lwp.log log4perl.appender.FileApp.layout = PatternLayout log4perl.appender.FileApp.layout.ConversionPattern = %d> %m%n log4perl.appender.ScreenApp = Log::Log4perl::Appender::Screen log4perl.appender.ScreenApp.stderr = 0 log4perl.appender.ScreenApp.layout = PatternLayout log4perl.appender.ScreenApp.layout.ConversionPattern = %d> %m%n ); # Initialize logging behaviour Log::Log4perl->init( \$conf ); Log::Log4perl->infiltrate_lwp(); my $logger = get_logger(); my $req_url = $ARGV[0]; if ($req_url =~ m/http/) { $req_url = "$req_url"; } else { $req_url = "http://$req_url"; } # whether you use GET or POST, both shown below, depends on what the # server accepts. try both, preferring POST my $response = $ua->request(POST "$req_url"); my $code = $response->code; if ($code == 405) { $response = $ua->request(GET "$req_url"); } # #my $response = $ua->request(POST "$req_url",/%parms); # print "\n===================================================\n"; # print "The response, as a string, is:\n"; # print $response->as_string; # print "\n===================================================\n"; #if ( $response->is_redirect ) { if (($code > 299) && ($code < 400)) { print $response->previous . " redirected to location " . $response->header('Location') . "\n"; print "The content is: ",$response->content,"\n"; print "\n===================================================\n"; print "The response, as a string, is:\n"; print $response->as_string; print "\n===================================================\n"; $logger->info($response->previous . " redirected to location " . $response->header('Location')); } else { if ($response->is_success) { print "The content is: ",$response->content,"\n"; $logger->info("The URL $req_url was successfully retrieved."); if (lc($response->content)=~m/'error_response'/){ $logger->warn("Response problematic content: ".$response->content); } } else { $logger->warn("The URL $req_url was not successfully retrieved."); } } sub log_it { my $tmp = shift; $tmp =~ s/\n+/,\t/g; $tmp =~ s/,\t$//; $logger->info($tmp); return; }