in reply to [LWP::UserAgent] 'Can't locate object method "request" via package "1" when attempting to add a hander

Back at it again. ... just guessing

You're not very good at guessing, I suggest you study the docs some more

$ perl studythedocs.pl ** POST http://example.com ==> 200 OK (3s) $ perl studythedocs.pl add_handler ** POST http://example.com ==> $VAR1 = bless( { ...**snip**... $VAR3 = $VAR2->{'handlers'}{'request_send'}[0]; Can't call method "request" without a package or object reference at C +:/citrusperl/site/lib/LWP/UserAgent.pm line 216.
  • Comment on Re: [LWP::UserAgent] 'Can't locate object method "request" via package "1" when attempting to add a hander
  • Download Code

Replies are listed 'Best First'.
Re^2: [LWP::UserAgent] 'Can't locate object method "request" via package "1" when attempting to add a hander
by three18ti (Monk) on Jan 30, 2015 at 01:49 UTC

    Thinking about it, it actually makes sense to modify the header in the "request_prepare" phase. Since, while I'm modifying the header I'm still in the "prepare" phase.

    So other than using "request_prepare" to solve my problem, I think there is rationale behind using it over "request_send"

    According to the lwp documentation, the signature of @_ is the same, header, useragent, and the handler. "sub { my($request, $ua, $h) = @_; ... }"

    I'm not sure what you're trying to show me. You get the same error I do. Why does dumping a variable cause it to cause an error? In calling "print Dumper @_" where am I calling request?

    Add to that I change handlers without changing code and dumping @_ doesn't generate an error. According to the LWP docs the @_ has the same signature.

      ...

      request_send => sub { my($request, $ua, $h) = @_; ... }

      This handler gets a chance of handling requests before they're sent to the protocol handlers. It should return an HTTP::Response object if it wishes to terminate the processing; otherwise it should return nothing.

      The response_header and response_data handlers will not be invoked for this response, but the response_done will be.

        OHHHHHHHHHHHHH!!!!

        "It" is the sub. so "it" the sub need a "return $HTTP::Response" in the sub, or from the code example a "return $request".

        Ok, cool! Thanks for copy pasting the docs that I've read 10k times. Sometimes it just takes a 2nd look.