I am trying to use LWP::UserAgent and cookie_jar, obviously according to the subject of this email. Anyhow, I cannot get my code to work, can someone look at it and tell me if I am just using it wrong?
I'll show my code and the response I get... I would really appreciate any help someone can offer. Code: (Of course I changed all real domains and user/membership info...) my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/8.0"); # pretend we are very capable browser $ua->requests_redirectable; $ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt", autosave => 1)); my $req = HTTP::Request->new(POST => 'http://www1.somedomain.com/weborder/xt_shopper_lookup.asp'); $req->content_type('application/x-www-form-urlencoded'); $req->content('shopper_memno=12345124&shopper_password=somepass&submit1=Continue'); $req->referer('http://www1.somedomain.com/weborder/xt_shopper_lookup.asp'); # Pass request to the user agent and get a response back my $res = $ua->request($req); # Check the outcome of the response if ($res->is_success) { my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/8.0"); # pretend we are very capable browser $ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt", autosave => 1)); $req = HTTP::Request->new(GET => "http://ftp.thedomainsftpsite.com/default.asp?memno=12345124"); $req->referer('http://www1.somedomain.com/weborder/xt_shopper_lookup.asp'); # Pass request to the user agent and get a response back my $res = $ua->request($req); if($res->is_success) { # Check to see if I can access the FTP site... # Yep, it appears to have let me login... This is where I'm getting the error that, "Login Required"... # When I go to the website and login manually, I can just click on the FTP site to go download files from there, like txt descriptions and stuff, one at a time. # So this SHOULD work with the cookie jar... $sth = $dbh->prepare (qq{ SELECT * FROM `my_items` ORDER BY `id` }); $sth->execute(); my $_cntr = 0; while($rs = $sth->fetchrow_hashref()) { $_pid = $rs->{pid}; $file_name = "/home/userid/files/Descriptions/" . $_pid . ".txt"; if(!-e "/$file_name/i") {# Ok it does not already exist, so go get it... $_sub_folder = Return_Sub_Folder($_pid); # Get the folder it would be in, based upon the ID number of it... my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/8.0"); # pretend we are very capable browser $ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt", autosave => 1)); $req = HTTP::Request->new(GET => "http://ftp.thedomainsftpsite.com/items/descriptions/$_sub_folder/$_pid.txt"); # $req->header('Accept' => 'text/plain'); # Don't want to use this right now... $req->referer("http://ftp.thedomainsftpsite.com/items/descriptions/$_sub_folder/"); # send request $res = $ua->request($req); if ($res->is_success) { # Check if it can get the .txt file description to save it to my account for later use... # COOL IT WORKED!!! $ctypeb = $res->content; $_output_filename = "/home/userid/files/Descriptions/" . $_pid . ".txt"; open (OUTFILE,">$_output_filename"); print OUTFILE $ctypeb; # SAVE IT! close(OUTFILE); } else { #Nope still did not work. Maybe it's .TXT instead of .txt lets try again with the .TXT extension my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/8.0"); # pretend we are very capable browser $ua->cookie_jar(HTTP::Cookies->new(file => "lwpcookies.txt", autosave => 1)); $req = HTTP::Request->new(GET => "http://ftp.thedomainsftpsite.com/items/descriptions/$_sub_folder/$_pid.TXT"); # $req->header('Accept' => 'text/plain'); # Don't want to use this right now... $req->referer("http://ftp.thedomainsftpsite.com/items/descriptions/$_sub_folder/"); # send request $res1 = $ua->request($req); if ($res1->is_success) { $ctypeb = $res1->content; $_output_filename = "/home/userid/files/Descriptions/" . $_pid . ".txt"; open (OUTFILE,">$_output_filename"); print OUTFILE $ctypeb; close(OUTFILE); } else {# Nope still did not work, please send me the error via email: $_mail_message .= qq~I could not find $_pid.txt on ourmemebersite.com so I could not add it to the directory.\n\nRun number 3: Content says:\n$res1->content\n\nStatus Line says:\n$res->status_line\n\n~; } } } .... Response: bash$ perl text_desc_dl.cgi Content-type: text/html/ Login Failed.... Thank you. Richard