Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Remote web form post

by c0ldfire (Initiate)
on Aug 20, 2011 at 18:24 UTC ( #921433=perlquestion: print w/replies, xml ) Need Help??
c0ldfire has asked for the wisdom of the Perl Monks concerning the following question:

Hello, I'm relatively new to perl, I was trying to create a perl script to remote login in a web form and return either sucess or failure. but its not working or i'm missing something, plus it give me an error message: Here is what i wrote:
#!/usr/bin/perl use LWP::UserAgent; use HTTP::Response; use HTTP::Request::Common qw(POST); $ua = LWP::UserAgent->new; $ua->agent("Mozilla 8.0..."); $username = "username"; $password = "password"; my $req = (POST '', ["Username" => "$username", "Password" => "$password"]); $request = $ua->request($req); $content = $request->content; if ($res->is_success) { print ("success"); exit; } else { print ("failure"); }
this script is not running at all and the error i'm getting is:

Can't call method "is_success" on an undefined value at c:\ line 24.

Replies are listed 'Best First'.
Re: Remote web form post
by linuxer (Curate) on Aug 20, 2011 at 19:00 UTC

    Where do you define and fill $res?

    That variable is never defined or filled and therefore is undefined.

    Maybe you should consider to use strict and warnings.


    I had another look at your script and think, there are more flaws than the one I previously mentioned.

    • $req should contain a HTTP::Request object; so you should create one.
    • POST 'http://...' is missing the correct operator between POST and the URL string
    • $ua->request() returns a response object; you should give the variable a better fitting name than $request.

      is missing the correct operator between POST and the URL string

      Sure its not :)

      use DDS; use HTTP::Request::Common qw(POST); Dump( POST '', [ qw' username joe password joe ' ] ) +; __END__ $HTTP_Request1 = bless( { _content => 'username=joe&password=joe', _headers => bless( { "content-length" => 25, "content-type" => 'application/x-ww +w-form-urlencoded' }, 'HTTP::Headers' ), _method => 'POST', _uri => \do { my $v = '' } }, 'HTTP::Request' ); bless( $HTTP_Request1->{_uri}, 'URI::http' );

      I agree with the rest of your words

        Ah, thank you for the hint. I tested with HTTP::Request, which I prefer...

        I thought of POST being a bareword and not an exported function from HTTP::Request::Common.

        Well, now I see, I don't like that style... ;-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://921433]
Approved by Corion
and a moth chases the moon...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2018-06-24 13:42 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.