ASP .NET - Obtendo caminhos e propriedades URL do HttpRequest


 Neste artigo eu vou mostrar como podemos obter informações de caminhos e propriedades URL do HttpRequest em uma aplicação ASP .NET Web Forms.

A classe HttpRequest Permite que o ASP.NET leia os valores HTTP enviados por um cliente durante uma solicitação Web.

Ela contém propriedades e métodos necessários para lidar com uma solicitação HTTP. Contém também todas as informações passadas pelo navegador, incluindo todas as variáveis do formulário, certificados e informações de cabeçalho e as variáveis de servidor CGI.

Como exemplo veremos uma aplicação ASP .NET Web Forms onde obtemos informações da URl usando a classe HttpRequest.

Recursos usados:

Criando o projeto no Visual Studio 2013 Express for web

Abra o VS 2013 Express for web e clique em New Project;

Selecione a linguagem Visual C# e o template ASP .NET Web Application;

Informe o nome Aspnet_HttRequest_Urls  e clique no botão OK;

A  seguir selecione o template Empty e marque a opção Web Forms pois vamos criar um projeto vazio :

Vamos incluir uma nova página no projeto a partir do menu PROJECT -> Add New Item;

Selecione o template Web-> Web Form e informe o nome Default.aspx e clique no botão Add;

Agora abra a página Default.aspx no modo Source e a partir da ToolBox inclua os seguintes controles:

Disponha os controles conforme o leiaute da figura abaixo:

Podemos ver o código gerado no modo Source abaixo:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Aspnet_HttRequest_Urls.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <h1>Macoratti .net</h1>
        <hr />
        <asp:Label ID="lblResultado" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

No evento Load verificamos se é um postback e chamamos o método ExibirPropriedadesObjetoRequest():

Versão VB .NET:

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            ExibirPropriedadesObjetoRequest()
        End If
    End Sub

Versão C#:

  protected void Page_Load(object sender, EventArgs e)
  {
            if (!IsPostBack)
            {
                ExibirPropriedadesObjetoRequest();
            }
  }

Vamos agora incluir o código abaixo referente a o método ExibirPropriedadesObjetoRequest() no arquivo code-behind Default.aspx.vb usando as propriedades da classe HttpRequest para obter diversas informações da requisição.

Código C# Código VB .NET
  private void ExibirPropriedadesObjetoRequest()
  {
            lblResultado.Text = "<table cellpadding=2 border=1>";
            lblResultado.Text += "<tr><td colspan=2 align=center>";
            lblResultado.Text += "Caminhos e propriedades URL do HttpRequest :";
            lblResultado.Text += "</td></tr>";
            // caminho da aplicação
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.ApplicationPath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.ApplicationPath + "</b>";
            lblResultado.Text += "</td></tr>";
            //caminho do arquivo de execução atual
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.CurrentExecutionFilePath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.CurrentExecutionFilePath + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho do arquivo
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.FilePath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.FilePath + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Path:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Path + "</b>";
            lblResultado.Text += "</td></tr>";
            // info do caminho
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.PathInfo:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.PathInfo + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho fisico da aplicação
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.PhysicalApplicationPath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.PhysicalApplicationPath + "</b>";
            lblResultado.Text += "</td></tr>";
            // raw url
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.RawUrl:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.RawUrl + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho absoluto
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.AbsolutePath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.AbsolutePath + "</b>";
            lblResultado.Text += "</td></tr>";
            // uri absoluta
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.AbsoluteUri:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.AbsoluteUri + "</b>";
            lblResultado.Text += "</td></tr>";
            // fragmento
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Fragment:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Fragment + "</b>";
            lblResultado.Text += "</td></tr>";
            // host
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Host:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Host + "</b>";
            lblResultado.Text += "</td></tr>";
            // autoridade
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Authority:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Authority + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho local
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.LocalPath:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.LocalPath + "</b>";
            lblResultado.Text += "</td></tr>";
            // caminho e consulta
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.PathAndQuery:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.PathAndQuery + "</b>";
            lblResultado.Text += "</td></tr>";
            // porta
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Port:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Port + "</b>";
            lblResultado.Text += "</td></tr>";
            // consulta
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Query:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Query + "</b>";
            lblResultado.Text += "</td></tr>";
            // esquema
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Scheme:";
            lblResultado.Text += "</td><td>";
            lblResultado.Text += "<b>" + Request.Url.Scheme + "</b>";
            lblResultado.Text += "</td></tr>";
            // segmentos
            lblResultado.Text += "<tr><td>";
            lblResultado.Text += "Request.Url.Segments:";
            lblResultado.Text += "</td><td>";
            string[] segments = Request.Url.Segments;
            foreach (string s in segments)
                lblResultado.Text += "<b>" + s + "</b><br>";
            lblResultado.Text += "</td></tr>";
            lblResultado.Text += "</table>";
  }
Private Sub ExibirPropriedadesObjetoRequest()

	lblResultado.Text = "<table cellpadding=2 border=1>"
	lblResultado.Text += "<tr><td colspan=2 align=center>"
	lblResultado.Text += "Caminhos e propriedades URL do HttpRequest :"
	lblResultado.Text += "</td></tr>"

	' caminho da aplicação
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.ApplicationPath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.ApplicationPath + "</b>"
	lblResultado.Text += "</td></tr>"

	'caminho do arquivo de execução atual
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.CurrentExecutionFilePath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.CurrentExecutionFilePath + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho do arquivo
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.FilePath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.FilePath + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Path:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Path + "</b>"
	lblResultado.Text += "</td></tr>"

	' info do caminho
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.PathInfo:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.PathInfo + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho fisico da aplicação
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.PhysicalApplicationPath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.PhysicalApplicationPath + "</b>"
	lblResultado.Text += "</td></tr>"

	' raw url
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.RawUrl:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.RawUrl + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho absoluto
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.AbsolutePath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.AbsolutePath + "</b>"
	lblResultado.Text += "</td></tr>"

	' uri absoluta
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.AbsoluteUri:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.AbsoluteUri + "</b>"
	lblResultado.Text += "</td></tr>"

	' fragmento
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Fragment:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Fragment + "</b>"
	lblResultado.Text += "</td></tr>"

	' host
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Host:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Host + "</b>"
	lblResultado.Text += "</td></tr>"

	' autoridade
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Authority:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Authority + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho local
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.LocalPath:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.LocalPath + "</b>"
	lblResultado.Text += "</td></tr>"

	' caminho e consulta
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.PathAndQuery:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.PathAndQuery + "</b>"
	lblResultado.Text += "</td></tr>"

	' porta
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Port:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Port + "</b>"
	lblResultado.Text += "</td></tr>"

	' consulta
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Query:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Query + "</b>"
	lblResultado.Text += "</td></tr>"

	' esquema
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Scheme:"
	lblResultado.Text += "</td><td>"
	lblResultado.Text += "<b>" + Request.Url.Scheme + "</b>"
	lblResultado.Text += "</td></tr>"

	' segmentos
	lblResultado.Text += "<tr><td>"
	lblResultado.Text += "Request.Url.Segments:"
	lblResultado.Text += "</td><td>"
	Dim segments As String() = Request.Url.Segments

	For Each s As String In segments
		lblResultado.Text += (Convert.ToString("<b>") & s) + "</b><br>"
	Next

	lblResultado.Text += "</td></tr>"
	lblResultado.Text += "</table>"

End Sub

Neste código estamos usando as propriedades da classe HttpRequest e montando uma tabela que será exibida no controle Label - lblResultado.

Dessa forma ao executar o projeto iremos obter o seguinte resultado:

Pegue o projeto completo aqui:  Aspnet_HttRequest_Urls.zip

Porque os judeus pedem sinal, e os gregos buscam sabedoria;
Mas nós pregamos a Cristo crucificado, que é escândalo para os judeus, e loucura para os gregos.
Mas para os que são chamados, tanto judeus como gregos, lhes pregamos a Cristo, poder de Deus, e sabedoria de Deus.
1 Coríntios 1:22-24

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti