Don't you also need to adjust the content-length header to match the new (uncompressed) content?
--- David Carter [EMAIL PROTECTED] On Tue, 2 Dec 2003 13:37:06 -0400, "Brian Cassidy" wrote: > > Hi All, > > Today I cooked up a little bit of code [1] to give > WWW::Mechanize the > ability to handle compressed content (gzip and > deflate). I forwarded it over > to Andy for his comments and he thought that maybe it > would be best if this > code was adapted for use directly in LWP. > > I would tend to agree since everything is handled > behind the scenes. > + If Compress::Zlib isn't available, we forgo the > "Accept_encoding" headers > + It makes sure the response is compressed before > trying to uncompress > > The only (freak) edge case would be if you get a > response that was encoded > and Compress::Zlib isn't available (thus it croak()s). > > There could be considerable bandwidth savings if LWP > users were able to get > compressed content by default (without even knowing it > :). Although I guess > therein hides the problem where we force people to > accept compressed > content. > > Comments? > > -Brian Cassidy ( [EMAIL PROTECTED] ) > > [1] > > package WWW::Mechanize::Compress; > > use strict; > use warnings FATAL => 'all'; > use vars qw( $VERSION $HAS_ZLIB ); > $VERSION = '0.01'; > > use base qw( WWW::Mechanize ); > use Carp qw( carp croak ); > > BEGIN { > $HAS_ZLIB = 1 if defined eval "require > Compress::Zlib;"; > } > > sub _make_request { > my $self = shift; > my $request = shift; > > $request->header( Accept_encoding => 'gzip; deflate' ) > if $HAS_ZLIB; > > my $response = $self->SUPER::_make_request( $request, > @_ ); > > if ( my $encoding = $response->header( > 'Content-Encoding' ) ) { > croak 'Compress::Zlib not found. Cannot uncompress > content.' > unless $HAS_ZLIB; > > $self->{ uncompressed_content } = > Compress::Zlib::memGunzip( > $response->content ) if $encoding =~ /gzip/i; > $self->{ uncompressed_content } = > Compress::Zlib::uncompress( $response->content ) if > $encoding =~ /deflate/i; > } > > return $response; > } > > sub content { > my $self = shift; > > return $self->{ uncompressed_content } || $self->{ > content }; > } > > 1; > > > http://www.gordano.com - Messaging for educators.