perl lwp content-encoding

perl - ¿Cómo puedo aceptar el contenido comprimido gzip usando LWP:: UserAgent?



content-encoding (1)

LWP tiene esta capacidad incorporada, gracias a HTTP::Message . Pero está un poco escondido.

Primero asegúrese de tener instalado Compress::Zlib para que pueda manejar gzip . HTTP::Message::decodable() generará una lista de codificaciones permitidas basadas en los módulos que ha instalado; en el contexto escalar, este resultado toma la forma de una cadena delimitada por comas que puede usar con el encabezado HTTP '' Accept-Encoding '', que LWP exige agregar a su HTTP::Request -s usted mismo. (En mi sistema, con Compress::Zlib instalado, la lista es " gzip , x-gzip , deflate ").

Cuando vuelva a aparecer su HTTP::Response , asegúrese de acceder al contenido con $response->decoded_content lugar de $response->content .

En LWP::UserAgent , todo se une así:

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;

Esto también decodificará texto a las cadenas Unicode de Perl. Si solo desea que LWP descomprima la respuesta y no se meta con el texto, haga lo siguiente:

print $response->decoded_content(charset => ''none'');

Estoy buscando algunas páginas en la Web usando LWP::UserAgent y me gustaría ser lo más educado posible. Por defecto, LWP::UserAgent no maneja perfectamente el contenido comprimido a través de gzip. ¿Hay alguna manera fácil de hacerlo, para ahorrarles a todos ancho de banda?