Invocando uma URL com conteúdo compactado


Há algum tempo eu escrevi sobre como compactar o output de uma página ASP.NET. O principal benefício desta técnica é compactar o resultado para que menos dados sejam transportados entre o cliente e o servidor. Quem faz a descompactação do conteúdo é o browser, ou melhor, a versão 1.1 do HTTP.

Mas quando precisamos invocar a URL dinamicamente, via qualquer outro tipo de aplicação, como um serviço Windows, fica a nosso encargo criar entradas no cabeçalho para indicar que a aplicação suporta compactação e, além disso, precisamos identificar se o conteúdo está ou não compactado e, caso esteja, devemos recorrer a um código semelhante ao que está no artigo para ter acesso ao conteúdo em seu formato legível.

As keys utilizadas são Accept-encoding (remessa) e Content-Encoding (retorno). O código abaixo exibe a forma que voce pode proceder para indicar a requisição que a tua aplicação suporta o conteúdo compactado e, quando receber, voce pode verificar se o conteúdo está ou não compactado:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.Headers.Add(“Accept-encoding“, “gzip”);

using (req as IDisposable)
{
    using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
    {
        Debug.WriteLine(resp.Headers[“Content-Encoding“]);
    }
}

Observação: De nada adianta voce informar a requisição que a sua aplicação suporta a compactação de conteúdo se a página/aplicação que está tentando acessar não suportar essa técnica.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s