Perl HTTP Tiny response - PullRequest
       2

Perl HTTP Tiny response

0 голосов
/ 21 сентября 2018

Как поместить ответ JSON HTTP::Tiny в Perl?

use HTTP::Tiny;

my $response = HTTP::Tiny->new->get('http://example.com/');

die "Failed!\n" unless $response->{success};

print "$response->{status} $response->{reason}\n";

while (my ($k, $v) = each %{$response->{headers}}) {
   for (ref $v eq 'ARRAY' ? @$v : $v) {
        print "$k: $_\n";
   }
}

print $response->{content} if length $response->{content};

Как поместить $response->{content} в переменную для передачи в html (tt2)?

1 Ответ

0 голосов
/ 21 сентября 2018

Вы бы передавали свой контент на процессор TT следующим образом:

use Template;

my $tt = Template->new;

$tt->process('some_template.tt', { content => $response->{content} })
  or die $tt->error;

Возможно, вы хотите сначала сохранить его в промежуточном скаляре:

my $content = $response->{content};

$tt->process('some_template.tt', { content => $content })
  or die $tt->error;

Возможно, вы хотите собратьхеш переменной TT, прежде чем передать ее процессору.

my %vars;

$vars{content} = $response->{content};

$tt->process('some_template.tt', \%vars)
  or die $tt->error;

Или вы можете использовать ссылку на хеш вместо фактического хеша:

my $vars;

$vars->{content} = $response->{content};

$tt->process('some_template.tt', $vars)
  or die $tt->error;

Обновление: В комментарии simbabque предполагает, что вы можете спросить, как декодировать контент JSON в массив или хеш.И я согласен, что это еще один способ интерпретации вашего вопроса.

Вам необходимо использовать модуль JSON .И это будет выглядеть примерно так:

use JSON;

my $json_parser = JSON->new; # Perhaps other options here, see docs.

my $decoded_json = $json_parser->decode($response->{content});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...