three18ti has asked for the wisdom of the Perl Monks concerning the following question:
HEllo Monks
Back at it again. Trying to figure out how to use a handler. I'm following the example Re^5: SOAP::Lite method with one param. When I add the "request_send" handler I receive an error. If I change the name of the handler to "request_done" or "request_prepare" I don't receive an error.
The error:
Can't locate object method "request" via package "1" (perhaps you forg +ot to load "1"?) at /usr/local/share/perl/5.18.2/LWP/UserAgent.pm lin +e 216.
Actually, this appears to be an issue with LWP::UserAgent
#!/usr/bin/env perl use strict; use warnings; use LWP::UserAgent; use Data::Dumper; my $ua = LWP::UserAgent->new; $ua->add_handler('request_send', \&pp_dump); $ua->post("http://google.com"); sub pp_dump { print Dumper @_; }
This is the SOAP code I was working with
#!/usr/bin/env perl use strict; use warnings; use 5.010; use SOAP::Lite; SOAP::Lite->import(+trace => 'all'); use Data::Dumper; my $client = SOAP::Lite->proxy($proxy) ->ns($namespace, 'foo') ->uri($uri) ->on_action(sub { sprintf '%s', $_[0] }) ->on_fault(sub { my($soap, $result) = @_; die ref $result ? "Fault Code: " . $result->faultcode . "\n" . "Fault String: " . $result->faultstring . "\n" : $soap->transport->status, "\n"; }); my $params = { foo => 'bar', biz => 'baz'}; # does not cause error # $client->transport->add_handler("request_prepare", \&pp_dump ); # causes error $client->transport->add_handler("request_send", \&pp_dump ); my $result = $client->call('my_api_method' => $params); sub pp_dump { print Dumper @_; }
Thanks!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: [LWP::UserAgent] 'Can't locate object method "request" via package "1" when attempting to add a hander
by Anonymous Monk on Jan 30, 2015 at 00:47 UTC | |
by three18ti (Monk) on Jan 30, 2015 at 01:49 UTC | |
by Anonymous Monk on Jan 30, 2015 at 01:55 UTC | |
by three18ti (Monk) on Jan 30, 2015 at 20:28 UTC |