Newsletter
Nome:
E-mail:

Artigos

| TI24x7 Cursos Online

Objetos Request e Response

28/04/2011

Como entender o que acontece quando se faz uma requisição ao servidor? Neste artigo, veremos como isso é feito através dos objetos Response e Request que são suportados no ASP.NET (quem conhece o ASP clássico provavelmente já o utilizou muito)!

Os objetos Response e Request, representam informações que chegam ao servidor Web a partir do navegador e as informações saindo do servidor para o navegador. O objeto de solicitação é chamado de entrada objeto e o objeto de resposta é chamado de objeto de saída. Ambas as requisições são feitas pelo navegador.

Objeto Response

Como mencionado acima, o objeto Response representa uma resposta HTTP válida que foi recebida do servidor. As propriedades do cabeçalho de resposta são somente leitura. Agora veremos as propriedades do objeto Response:

  • Body: Obtêm o corpo do HTTP response. Somente a porção do corpo armazenado no buffer respose é retornado.
  • BytesRecv: Obtêm o número de bytes que o cliente recebeu no response.
  • BytesSent: Obtêm o número de bytes enviados em um request HTTP.
  • CodePage: Obtêm ou define o código da página usado para configurar o corpo do response HTTP.
  • ContentLength: Obtêm o tamanho em bytes do corpo response.
  • Headers: Obtêm uma coleção de cabeçalhos em response.
  • HeaderSize: Obtêm o tamanho combinado , em bytes, de todos os cabeçalhos response.
  • HTTPVersion: Obtêm a versão HTTP usada pelo servidor para este response.
  • Path: Obtêm o que foi requisitado.
  • Port: Obtêm a porta do servidor usada para o request.
  • ResultCode: Obtêm o código de estado do response do servidor.
  • Server: Obtêm o nome do servidor que enviou o response.
  • TTFB: Obtêm o número de milisegundos que se passaram antes do primeiro byte do response ser recebido.
  • TTLB: Obtêm o número de milisegundos que se passaram antes que último byte do response foi recebido.
  • UseSSL: Verifica se o servidor e o clientes usam uma conexão SSL para o response e o request.

Objeto Request

O objeto Request representa uma solicitação HTTP antes de ter sido enviada para o servidor. Vejamos as propriedades do objeto Request:

  • Body: Obtêm/Defube o corpo do request HTTP.
  • CodePage: Obtêm/Define o código da página para o corpo request.
  • EncodeQueryAsUTF8: Obtêm/Define whether ACT automatically UTF-8 encodes the request's query string.
  • Headers: Obtêm a coleção de cabeçalho HTTP.
  • HTTPVersion: Obtêm/Define a versão HTTP.
  • Path: Obtêm/Define o caminho HTTP.
  • ResponseBufferSize: Obtêm/Define o tamanho do buffer usado para armazenar o corpo response.
  • Verb: Obtêm/Define o método verb HTTP.

Mesmo programando em ASP.NET, confesso que tenho utilizado muito esses dois objeto nas requisições ao servidor de forma assíncrona.

Vamos fazer um exemplo simples de demonstração:

Crie um novo WebSite (empty template) no seu Visual Studio 2010.

E coloque o seguinte código HTML dentro da TAG Form:

<div>
    <h3>
        Selecione um site para acessar por meio do Response:
    </h3>
    <asp:RadioButtonList ID="rblLinksExternos" runat="server">
        <asp:ListItem Value="Google">Google</asp:ListItem>
        <asp:ListItem Value="Bing">Bing</asp:ListItem>
        <asp:ListItem Value="Yahoo">Yahoo</asp:ListItem>
        <asp:ListItem Value="Wolfram">Wolfram|Alpha</asp:ListItem>
    </asp:RadioButtonList>
    <br />
    <asp:Button ID="btnRedirecionarLink" runat="server" Text="Redirecionar para o site selecionado" onclick="btnRedirecionarLink_Click" />
    <h3>
        Exemplo da utilização do objeto Request:
    </h3>
    <asp:Button ID="btnCallRequest" runat="server" Text="Exemplo Request" onclick="btnCallRequest_Click" />
</div>

E no evento click do RadioButtonList, coloque:

protected void btnRedirecionarLink_Click(object sender, EventArgs e)
{
    switch (rblLinksExternos.SelectedValue)
    {
        case "Google":
            Response.Redirect("http://www.google.com");
            break;
        case "Bing":
            Response.Redirect("http://www.bing.com");
            break;
        case "Yahoo":
            Response.Redirect("http://www.yahoo.com");
            break;
        case "Wolfram":
            Response.Redirect("http://www.wolframalpha.com");
            break;
    }
}

Por fim, no evento click do botão Request coloque:

protected void btnCallRequest_Click(object sender, EventArgs e)
{
    Response.Write(string.Concat("<p>Endereço do servidor: ", Request.UserHostAddress.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Caminho da aplicação: ", Request.ApplicationPath.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Tipo de navegador utilizado: ", Request.Browser.Browser.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Caminho de execução: ", Request.CurrentExecutionFilePath.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Caminho do aquivo atual: ", Request.FilePath.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Método HTTP: ", Request.HttpMethod.ToString(), "</p>"));
    Response.Write(string.Concat("<p>Informações do usuário: ", Request.UserAgent.ToString(), "</p>"));
}

Sabendo utilizar esses objetos, as possibilidades são grandes e podem te ajudar muito no seu projeto. Execute estes exemplos e veja o que podemos fazer com o objeto Response e Request.

Por hora é isso e até a próxima!



Colunista

Fabrizio Rodrigues

Graduado em Tecnologia, Análise e Desenvolvimento de Sistemas. Possui cursos Microsoft 2278/2192A, 4994A, 2956B, 2542A, 2543B, e 2544A. Trabalha com desenvolvimento de sistemas na linguagem C# e utiliza tecnologias como JavaScript, jQuery e SilverLight. Experiência em desenvolvimento de sistemas para governos na área da construção civil. Atualmente trabalha como Desenvolvedor WEB em um empresa na área de Segurança Digital Tributária.
© Copyright 2011 - Todos os direitos reservados. Proibida a reprodução parcial ou total do conteúdo deste site.
Como Funciona Formas de Pagamento Logo Ebit Compra Segura

TI 24x7 - O Maior portal de cursos online especializado em TI do Brasil