Re: Compressing SOAP requests

"Scott Nichol" <[email protected]>
Newsgroups gmane.text.xml.soap.user
Message-ID <1f2001c4cb45$045e3000$6401a8c0@northgate>
Your compressed response should have HTTP headers

Content-Type: text/xml
Content-Encoding: gzip

Scott Nichol

Do not send e-mail directly to this e-mail address,
because it is filtered to accept only mail from
specific mail lists.
----- Original Message ----- 
From: "Nige White" <[email protected]>
To: <[email protected]>
Sent: Monday, November 15, 2004 1:22 PM
Subject: Re: Compressing SOAP requests


> Scott Nichol wrote:
> 
> >FYI, deflate follows Zlib as described in RFC 1950 (http://www.ietf.org/rfc/rfc1950.txt?number=1950).  The Zlib DEFLATE method of compression is described in RFC 1951, while gzip is described in RFC 1952 (http://www.ietf.org/rfc/rfc1952.txt?number=1952).  RFC 1952 looks like it specifies 10 bytes for the header, so I am not sure why 8 bytes works....
> >
> >  
> >
> Well, I've been battling with it.
> 
> Why 8 bytes works...
> 
> zlib already has a 2 byte flag prefix which the gzip compressed data 
> (after its 10 byte header) does not use, so it *looks* like it works 
> appending the 8 bytes.
> 
> Here's what I do:
> 
> When recieving gzip data:
> 
> Remove the first 10 bytes, they are the gzip-specific 10 byte header
> Remove the last 8 bytes, they consist of a CRC-32 checksum of the 
> original data, and original data length
> Prepend the zlib 2 byte flag: 0x78 0x9c
> Call zlib-inflate, and ignore error -5. THis is probably because the 
> buffer ends abruptly with no Adler checksum
> 
> When sending data as gzip:
> 
> Call zlib-deflate
> Remove the 2 zlib flag prefix bytes.
> Prepend the 10 byte gzip-specific header
> Append a CRC-32 checksum of the original data (Calculated in "DBL" which 
> has no unsigned arithmetic, and no bit-shift operators!)
> Append the original data length
> 
> This works in that I can compress data, and output it to a file which 
> gunzip will happily inflate to the original data.
> 
> I can also see (in my logfile) the correctly inflated SOAP packets 
> coming in to my DBL server.
> 
> There does seem to be a problem when SOAP receives by compressed packet. 
> It is throwing "Content is not allowed in prolog."
> 
> I still set the Content-Type header to "text/html". Should I change this 
> to indicate to SOAP that it is gzip data coming back?
> 
> I'll be back tomorrow, home time now.
> 
> Cheers,
> 
> Nigel
> 
> _____________________________________________________________________
> This message has been checked for all known viruses. Virus scanning
> powered by Messagelabs http://www.messagelabs.com For more information
> e-mail : [email protected]
> 
> 
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.