2009/4/3 Thanos Chatziathanassiou <tcha...@arx.gr>:
> O/H Sudarshan Soma έγραψε:
>>
>> Thanks a lot . I have a followup query, can anyone please advice me:
>>
>> My application (webser) will set up sessionId in the cookie and sets
>> redirect URL to main page(if login is successfull). In case of
>> browser, this works fine with redirect thread reaches server with the
>> sessionId set and request for main page.
>>
>> Can anyone please let me know how, it can be made to work in perl with
>> redirect URLs.
>>
>> I think this is a basic query , but my intial search didnt help me.
>> Please advice
>>
>
> You really need to familiarize yourself with perldoc (or google for that
> matter ;)
>
> To the matter at hand: redirects should work quite as expected. If they do
> not, then they're probably not HTTP 3xx (see
> http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) and perhaps you'll
> have to resort to some fancy regex (perldoc perlre) to go to the correct
> URI.
> For HTTP, see ``$ua->max_redirect'' and ``$ua->requests_redirectable'' in
> ``perldoc LWP::UserAgent''. Also take a look in the libwww-perl cookbook
> ``perldoc lwpcook''.
> Someone's bound to have already done what you need.
>>
>> Thanks and Best Regards,
>> Pavan
>>
>> My code till now is:
>>
>>  $ua = new LWP::UserAgent;
>>    if(! $ua) {
>>        return 0;
>>    }
>>
>>    $ua->cookie_jar(HTTP::Cookies->new);
>>    $requestString = "http://x.y.z.w?Username=abc&Password=abc";;
>>    $requestObject = HTTP::Request::Common::GET $requestString;
>>    $result = $ua->request($requestObject);
>>    $resp = $result->content;
>>    print "$resp";
>>
>>
>> On Wed, Apr 1, 2009 at 3:20 PM, Thanos Chatziathanassiou <tcha...@arx.gr>
>> wrote:
>>
>>>
>>> O/H Sudarshan Soma έγραψε:
>>>
>>>>
>>>> Hi All,
>>>> I have a requirement to test webserver using perl scripts. The
>>>> webserver creates a sessionId after successfull authentication. Hence
>>>> for futher requests to the webserver, i need to send the sessionId
>>>> which is set in the browser/client . Can anyone please let me know how
>>>> can i do this.
>>>>
>>>> Myperl script is something like this:
>>>>
>>>> $requestString = "http://x.y.x.w";
>>>> $request = HTTP::Request->new(GET => $requestString);
>>>> $request->authorization_basic($userid, $passwd);
>>>> $request->push_header(Cookie => "SESSIONID=?????; path=/;"); ------>
>>>> capture session id from browser
>>>>
>>>>
>>>
>>> rather:
>>> ---8<---
>>> use HTTP::Cookies;
>>> use HTTP::Request::Common;
>>> use LWP::UserAgent;
>>>
>>> $ua = LWP::UserAgent->new;
>>> $requestString = "http://x.y.x.w";;
>>> $ua->cookie_jar(HTTP::Cookies->new);
>>> $result = $ua->request(HTTP::Request::Common::GET $requestString));
>>> $ua->cookie_jar->extract_cookies($res);
>>> #session id is now in the cookie jar. ``perldoc HTTP::Cookies''
>>> #to read it
>>> $anotherURI = "http://x.y.x.w/whatever";;
>>> $requestObject = HTTP::Request::Common::GET $anotherURI;
>>> #automatically add the cookies (including the session-id) to this
>>> request..
>>> $ua->cookie_jar->add_cookie_header($requestObject);
>>> $result = $ua->request($requestObject);
>>>
>>> ---8<---
>>>
>>>
>>>>
>>>> Best Regards,
>>>> Pavan
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: asp-unsubscr...@perl.apache.org
>>>> For additional commands, e-mail: asp-h...@perl.apache.org
>>>>
>>>>
>>>>
>>>
>>>
>
>


Thanks a lot. I got the final code now

use warnings;

use HTTP::Cookies;
use HTTP::Request::Common;
use LWP::UserAgent;

{
    $ua = new LWP::UserAgent;
    if(! $ua) {
        print "Can not get the page :UserAgent fialed \n";
        return 0;
    }

    my $cookies=new HTTP::Cookies(file=>'./cookies.dat',autosave=>1);
    $ua->cookie_jar($cookies);
# push does all magic to exrtact cookies and add to header for further
reqs. useragent should be newer
    push @{ $ua->requests_redirectable }, 'POST';
    $result = $ua->request(POST "http://x.y.z.p";,
            {
            Username =>'xxx',
            Password =>'xxx',
            Submit             =>'Submit'
            });
    $resp = $result->content;

 $anotherURI = "http://x.y.z.p/gd";;
    $requestObject = HTTP::Request::Common::GET $anotherURI;
    $result = $ua->request($requestObject);
    $resp = $result->content;

---------------------------------------------------------------------
To unsubscribe, e-mail: asp-unsubscr...@perl.apache.org
For additional commands, e-mail: asp-h...@perl.apache.org

Reply via email to