It's hard to say what the problem is, since I don't have your site to play with. The authorization_basic part of the upload script, is the integrated login put out by the server, it's not for a separate login form/page.It looks as if the url you are entering, is redirecting you to another site. Maybe the proxy server is sending the message, have you added the proxy handling? You didn't post the code you are using. Lwp works in a very straight forward manner, when the upload site redirects, or something else devious, you may need to use WWW::Mechanize. The first thing I would try, is to use the URL you show above, as the upload URL, if you are not already. You can also try adding
$ua->requests_redirectable ( ['GET', 'HEAD', 'POST'] )
# or
push @{ $ua->requests_redirectable }, 'POST';
You may need WWW::Mechanize
| [reply] [d/l] |
Thanks again! below is the code
#!/usr/bin/perl
use warnings;
use strict;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common qw(POST);
my $upload_url = 'https://mysite.com/import.do';
my $login_url = 'https://mysite.com/login.do ';
my $https_user = 'ABC';
my $https_pass = 'ABC';
my $file = 'File_2007_10_15_14_21_02.csv';
&postHTTPS();
sub postHTTPS
{
my $ua = new LWP::UserAgent(keep_alive=>1);
$ua->proxy(https => 'http://ourproxyserver');
my $request = new HTTP::Request ("GET" => $login_url );
$request->authorization_basic($https_user, $https_pass);
#$ua->protocols_allowed( [ 'https'] );
$ua->cookie_jar(HTTP::Cookies->new(file =>".cookies.txt",autos
+ave => 1));
# $request->proxy_authorization_basic($https_user, $https_pass);
#setup request
print "before posting\n";
my $req=POST ($upload_url,Content_Type => 'multipart/form-data
+',
Content_Type => [
submit => 1,
Content => [ $file ]
]);
print "after posting\n";
my $response = $ua->request($req);
if ($response->is_error())
{
printf " %s\n", $response->status_line;
print "https request error!\n";
} else {
my $content = $response->content();
#print "$content\n";
}
print "";
if ( $response->is_success ) {
print $response->as_string;
}else {
print $response->status_line;
}
}
As you might know I cannot give my exact site name due to some reasons.
I think when i call the upload page it goes to the login page whre we have to provide the username and password (not in the form but in the IE authentication box)
when i execute the above code I dont get any error!
Have I missed anything in the code? | [reply] [d/l] |
LWP::UserAgent has redirect enabled only for methods GET and HEAD by default. Since the form's submit method is POST, the redirected responses won't be followed. Add POST to the list of redirected methods with
$ua->requests_redirectable ( ['GET', 'HEAD', 'POST'] )
So I wouldn't separate the login_url from the upload_url..... let lwp redirect it automatically, the upload cgi script probably checks if you were redirected properly. Also see if you can get some info from the server logs.
| [reply] [d/l] [select] |
no luck ;-( same problem as what is mentioned here
http://lists.evolt.org/archive/Week-of-Mon-20001204/021219.html
i have posted the code in my message.
awaiting for your response
thanks in advance
regards
Karthik
| [reply] |
All I can say is try the LWP::Debug module, see Debugging LWP. Maybe try capturing your transaction with something like LiveHttpHeaders, or ethereal, to see whats going on.
| [reply] |