Как я могу поймать сообщение об ошибке «Не удалось декодировать JSON» в Perl?

Итак, я пытаюсь загрузить тест REST API, который возвращает значение JSON.

Для этого я создаю несколько экземпляров сценария perl.

Сценарий Perl в основном вызывает этот URL и пытается decode_json . Очевидно, что когда создается значительная нагрузка, он выходит из строя.

Теперь я столкнулся с проблемой: ошибка отображается в командной строке, но не записывает это сообщение об ошибке в файл.

Сообщение об ошибке

неверно сформированная строка JSON, ни массив, ни объект, ни число, ни строка, ни атом, при символьном смещении 0 (перед «Невозможно подключиться к 209 ...») в строке 39 json_load_test.pl.

Во всех трех попытках ниже строка 39 ссылается на:

decode_json($actual_response);

Я просто запускаю сценарий в командной строке как:

perl json_load_test.pl >> logs/output.txt 

Я ОЖИДАЮ, ЧТО СООБЩЕНИЕ ОБ ОШИБКЕ БУДЕТ НАПИСАНО В "output.txt"

My три неудачных попытки заключаются в следующем.

Попытка 1:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response);
if ($? == -1)
{print "\n Failed to execute: $!\n"; }

Попытка 2:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
my $perl_scalar= decode_json($actual_response);
if ($perl_scalar)
{ok(1,"For process $u2 inside counter $counter ");}
else
{ok(0,"FAILED!!! process $u2 inside counter $counter");}

Попытка 3:

my $ua = LWP::UserAgent->new;
$ua->timeout(3);    
$ua->env_proxy;        
my $response = $ua->get("http://$j_env/jobs/all.json?status=active");
my $actual_response=$response->decoded_content;
decode_json($actual_response) or die "FAILED!!!!";
10
задан Sinan Ünür 18 October 2011 в 16:33
поделиться