Krillianaire has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I have a script to retrive some company data from Companies House. I have a list of company numbers, the script goes through each one in turn and collects some data. There are several hundred numbers to go through and at random points I get the following error and the script dies:

Can't locate object method "json_content" via package "HTTP::Headers" at /usr/local/share/perl5/HTTP/Message.pm line 652.

This does not occur at any given company number, can happen on the 10th one or 255th one, no pattern there. The part of the code where the error occurs:

my $ua = LWP::UserAgent::JSON->new; my $request = HTTP::Request::JSON->new( GET => "https://api.companiesh +ouse.gov.uk/company/$cn"); $request->authorization_basic('password_here'); # actual password remo +ved my $response = $ua->request($request); my $json = $response->json_content;

I thought that maybe the response from companies house was broken at certain times, or it was giving an error and that was the reason. But when I dumped the return for $response, there appears to be no issue just before the script breaks. Not really sure what else to try, so any help would be greatly appreaciated.

~Krill

Replies are listed 'Best First'.
Re: Can't locate object method "json_content"
by choroba (Cardinal) on Mar 24, 2018 at 11:24 UTC
    Note the last line of the synopsis at LWP::UserAgent::JSON:
    # $response->isa('HTTP::Response::JSON') if we got back JSON
    Have you checked whether $reponse->isa('HTTP::Response::JSON')? If it's not, what is it? It probably is a HTTP::Response object containing a response of a different content-type.

    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,