in reply to Re: Problem calling WWW::Mechanize redirect_ok
in thread Problem calling WWW::Mechanize redirect_ok

Hi,

Could you tell me how to override the redirect_ok method please? I'm not too sure how to do this.

Thanks,

js1

  • Comment on Re^2: Problem calling WWW::Mechanize redirect_ok

Replies are listed 'Best First'.
Re^3: Problem calling WWW::Mechanize redirect_ok
by Joost (Canon) on Jan 05, 2006 at 13:12 UTC
    Looking at the docs for LWP::UserAgent, we can see:
    $ua->redirect_ok( $prospective_request, $response )
    This method is called by request() before it tries to follow a redirection to the request in $response. This should return a TRUE value if this redirection is permissible. The $prospective_request will be the request to be sent if this method returns TRUE.

    So basically, you want to create a redirect_ok method that always returns a true value. A clean way of doing that is to create a subclass of WWW::Mechanize that overrides WWW::Mechanize's redirect_ok method.

    package WWW::Mechanize::AlwaysRedirect; # this class is a subclass of WWW::Mechanize use base 'WWW::Mechanize'; sub redirect_ok { 1; # always return true. } package main; my $agent = WWW::Mechanize::AlwaysRedirect->new(); # proceed as per usual with this $agent instead of the one # in your original code

    You seem to be slightly confused by object-oriented techniques. You should probably take a look at at perltoot and perlmod. There is also the very good "Object Oriented Perl" book by Damian Conway.

      Thanks, that was a really helpful reply, and thanks for the links.

      Unfortunately I still get a 302 Found page in the browser, so there must be something else I need to do to get the script to follow the redirect through. I'll plough on and see if I can find the answer.

      Thanks again!