I appreciate your reply. It would be impossible to create a small and
complete program to describe my problem. As a compromize I am including
a link to a page that describes exactly what I'm trying to accomplish.
http://www.businessanyplace.net/?p=wscompress
I am also including the code that I have in place in the proxy class as
well as the decompress class.
Thanks,
Dante
#############################
start code
#############################
###### in proxy class ########
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest request = base.GetWebRequest(uri);
request.Headers.Add("Accept-Encoding", "gzip, deflate");
return request;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
HttpWebResponseDecompressed response = new
HttpWebResponseDecompressed(request);
return response;
}
######### Decompress class ##########
public class HttpWebResponseDecompressed : System.Net.WebResponse
{
private HttpWebResponse response;
public HttpWebResponseDecompressed(WebRequest request)
{
response = (HttpWebResponse)request.GetResponse();
}
public override void Close()
{
response.Close();
}
public override Stream GetResponseStream()
{
Stream compressedStream = null;
if(response.ContentEncoding == "gzip")
{
compressedStream = new GZipInputStream(response.GetResponseStream());
}
else if(response.ContentEncoding == "deflate")
{
compressedStream = new ZipInputStream(response.GetResponseStream());
}
if(compressedStream != null)
{
// Decompress
MemoryStream decompressedStream = new MemoryStream();
int totalSize = 0;
int size = 2048;
byte[] writeData = new byte[2048];
while(true)
{
size = compressedStream.Read(writeData, 0, writeData.Length);
totalSize += size;
if(size > 0) {
decompressedStream.Write(writeData, 0, size);
} else {
break;
}
}
decompressedStream.Seek(0, SeekOrigin.Begin);
return decompressedStream;
}
else
return response.GetResponseStream();
}
public override long ContentLength
{
get { return response.ContentLength; }
}
public override string ContentType
{
get { return response.ContentType; }
}
public override System.Net.WebHeaderCollection Headers
{
get { return response.Headers; }
}
public override System.Uri ResponseUri
{
get { return response.ResponseUri; }
}
}
#############################
end code
#############################