in reply to what is the correct way to set cookie in LWP::UserAgent

You did not initialize your cookie jar properly.

See LWP::UserAgent and HTTP::Cookies for how to specify the cookie jar.

  • Comment on Re: what is the correct way to set cookie in LWP::UserAgent

Replies are listed 'Best First'.
Re^2: what is the correct way to set cookie in LWP::UserAgent
by Eroln (Novice) on Jun 15, 2017 at 02:43 UTC
    Thanks for the answer, of course.

    I looked in LWP::UserAgent previously and I still hope I can supply just a string with cookie itself, not cookies.lwp file. Basic question - is it possible?

    In HTTP::Cookies is mentioned I should supply cookie from a file. Which I hoped to avoid...

    As plan B, I will try to create lwp cookies. But it is Catch XXII, no knowledge of structure-> no cookie-> not functional connection-> no updated cookie, thus no connection. But that might be another question, I haven't searched for answer yet.

      A cookie is just another header. A cookie jar is a collection of cookies that the browser can search by the page it is going to and select the right ones to send back

      if you wanted to just supply a single cookie and not care about any cookies you get back you could try this

      my $ua=LWP::UserAgent->new(keep_alive=>1); my $getline='http://place.to.go.to/'; my $req = new HTTP::Request (GET => $getline ,HTTP::Headers->new('Cookie'=> 'JSESSION +ID=F97AC6F5AD33D54D0C06F4CBF0230C43' ) ); my $request = $ua->request ($req);
      When i want to use a "stand alone" cookie-jar i do something like this
      my $cookie_jar_obj = HTTP::Cookies->new(ignore_discard=>1,hide_cooki +e2=>1); my $ua=LWP::UserAgent->new(keep_alive=>1); $ua->cookie_jar( $cookie_jar_obj ); $cookie_jar_obj->set_cookie(0, 'JSESSIONID', 'F97AC6F5AD33D54D0C06F4 +CBF0230C43' , '/', 'place.to.go.to', 80 , '', '', 14400000, 0 ); $cookie_jar_obj->set_cookie(0, 'LoginUsername', 'Operator' , '/', 'place.to.go.to', 80 , '', '', 14400000, 0 ); $cookie_jar_obj->set_cookie(0, "LoginPassword", 'Operator' , '/', 'place.to.go.to', 80 , '', '', 14400000, 0 ); $repeatme=1; while ($repeatme) { my $getline='http://place.to.go.to/'; my $req = new HTTP::Request (GET => $getline); my $request = $ua->request ($req); if (some-test-for-done){ $repeatme=0;} }
      In both cases those are just cut and pastes from existing code and not tested as they appear here. YMMV

        Thanks, huck, this was a real breakthrough :-).

        I found you were able to make run construction I have used previously. As result, I found my where is my problem. I expect cookies are agent independent, but they are not.

        I.e. I cannot use cookie extracted from curl to connect via LWP. When I did both operations on the same agent, I was successful.

        I will write an answer later on when I test my solution.