yusy has asked for the wisdom of the Perl Monks concerning the following question:

Hello all, I was trying to login and get the web page using perl. but after login, the page was redirected. How can I follow to get the content? right now, I only get "loading......" Thanks~
use WWW::Mechanize; $username = "xxxx"; $password = "xxxx"; my $mech = WWW::Mechanize->new(); $mech->cookie_jar(HTTP::Cookies->new()); $mech->get( "https://sample" ); $mech->submit_form( form_name => "login", fields => { j_username => $username, j_password => $password}, ); $mech->submit(); $mech->save_content( "xxx.html" ); end;

Replies are listed 'Best First'.
Re: how to follow the redirected web pages?
by olus (Curate) on Mar 13, 2008 at 16:59 UTC

    I'm not experienced with Mechanize, but there is a lot you can use from LWP. The method submit returns an HTTP::Response object that you can use to check for the results you get. With that object you can check whether you are being redirected or not. Just look into the headers and check the status code you are receiving. Status codes of class 30x indicate redirection.

    There is also a chance you get a status code of 200 and yet being asked to redirect (refresh to some other url). In the code below there are a few methods that may get you started in looking into the response headers. Read LWP's docs.

    use strict; use warnings; use HTTP::Request::Common; use LWP::UserAgent; use Data::Dumper; my $ua = LWP::UserAgent->new(); my $response = $ua->request(GET "http://some.url"); print $response->headers_as_string; print $response->content; print $reponse->is_success; print $response->status_line; print Dumper($response);
Re: how to follow the redirected web pages?
by moritz (Cardinal) on Mar 13, 2008 at 17:13 UTC
    The docs mention $mech->redirect_ok() - that should do the trick.
      Thanks! but it says Can't call method "request" on an undefined value at E:/Perl/site/lib/LWP/UserAgent.pm line 545.
        Check line 42