Как может я принимать gzip-сжатое содержание с помощью LWP:: UserAgent?

Я сказал бы

  • количество пустых строк количества
  • комментариев, потому что они важны для удобочитаемости, но не больше чем один непрерывно
  • строки с фигурными скобками рассчитывает также, но применяет то же правило что касается пустых строк - т.е. 5 вложенных фигурных скобок без кода между ними количества как одна строка.

я также кротко предположил бы, что любой мерой по производительности, которая на самом деле полагается на значение LoC, является койка :)

22
задан Ryan Tate 26 January 2012 в 23:50
поделиться

1 ответ

В LWP встроена эта возможность благодаря HTTP :: Сообщение . Но это немного скрыто.

Сначала убедитесь, что у вас установлен Compress :: Zlib , чтобы вы могли обрабатывать gzip . HTTP :: Message :: decodable () выведет список разрешенных кодировок на основе установленных вами модулей; в скалярном контексте этот вывод принимает форму строки с разделителями-запятыми, которую можно использовать с HTTP-заголовком ' Accept-Encoding ', который LWP требует, чтобы вы добавили в свой ] HTTP :: Request -s самостоятельно. (В моей системе с установленным Compress :: Zlib список следующий: « gzip , x-gzip , deflate ».)

Когда ваш HTTP :: Response возвращается, убедитесь, что получили доступ к контенту с помощью $ response-> decoded_content вместо $ response-> content .

В LWP :: UserAgent , все это объединяется следующим образом:

my $ua = LWP::UserAgent->new;
my $can_accept = HTTP::Message::decodable;
my $response = $ua->get('http://stackoverflow.com/feeds', 
    'Accept-Encoding' => $can_accept,
);
print $response->decoded_content;

Это также будет декодировать текст в строки Unicode Perl. Если вы только хотите, чтобы LWP распаковывал ответ и не связывал текст, сделайте так:

print $response->decoded_content(charset => 'none');
36
ответ дан 29 November 2019 в 05:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: