C# - Apresentando os recursos da classe Uri - III
Neste artigo vou apresentar os recursos da classe Uri do namespace System da linguagem C#. |
Vamos continuar a segunda parte deste artigo apresentando mais recursos da classe Uri.
Recursos Usados neste artigo :
Propriedades URI
A classe Uri define diversas propriedades booleanas úteis que permitem classificar uma URI. As principais são:
Abaixo conferimos a utilização destas propriedades e o resultado obtido:
using System;
using static System.Console;
namespace CShp_Uri
{
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://macoratti:password@authority.com:5555/path/pagina.aspx?valor1=10&valor2=20#fragment");
WriteLine(uri);
WriteLine($"IsAbsoluteUri : {uri.IsAbsoluteUri}");
WriteLine($"IsDefaultPort : {uri.IsDefaultPort}");
WriteLine($"IsFile : {uri.IsFile}");
WriteLine($"IsLoopback : {uri.IsLoopback}");
WriteLine($"IsUnc : {uri.IsUnc}");
ReadLine();
}
}
}
|
Segmentos URI
Nós já vimos obter parte do caminho de uma
URI através da propriedade Path. Quando você deseja processar um caminho
de uma URI absoluta, talvez realizando alguma reescrita de URL em um servidor,
você precisa de uma maneira mais refinada de ler o caminho. A propriedade
Segments pode ajudar.
A propriedade Segments retorna uma matriz
de strings contendo os "segmentos" (substrings) que formam o
caminho absoluto do URI. O primeiro segmento é obtido através da análise do
caminho absoluto do seu primeiro caractere até chegar a
uma barra (/) ou ao final do caminho.
Cada segmento adicional começa no primeiro caractere após o segmento anterior e termina com a próxima barra ou o final do caminho. (O caminho absoluto de URI contém tudo após o host e a porta e antes da consulta e do fragmento).
Exemplo de caminho absoluto e segmentos para duas URIs:
No código a seguir temos propriedade Segments em ação. Aqui, o caminho tem duas partes, mas gera três segmentos. O primeiro segmento é uma barra inclinada simples.
using System;
using static System.Console;
namespace CShp_Uri
{
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://macoratti:password@authority.com:5555/path/pagina.aspx?valor1=10&valor2=20#fragment");
WriteLine(uri);
//segments
foreach (string segment in uri.Segments)
{
Console.WriteLine(segment);
}
ReadLine();
}
}
}
|
Métodos URI
Os
construtores e as propriedades da classe Uri tornam o trabalho com URI muito
mais simples do que se você tentasse alcançar os mesmos resultados usando
somente strings.
Para mais flexibilidade, a classe inclui ainda uma diversos métodos de instãncia
e métodos estáticos. Vamos focar nos métodos estáticos.
Comparando URIs para obter
um caminho relativo
Se você quer obter um recurso em uma URI
para se referir a outra URI usando a sintaxe relativa, você vai precisar
converter uma URI absoluta para relativa.
É isso que faz o método MakeRelativeUri, que determina a diferença entre
duas instâncias uri e cuja sintaxe é :
Uri1.MakeRelativeUri(Uri2)
O método executa o caminho que deve ser seguido da primeira URI para alcançar a
segunda e retorna isso como um novo e relativo objeto Uri.
Se o caminho entre os dois endereços requer movimento "para cima" através
da hierarquia do caminho, as etapas para cima serão incluídas como segmentos
".." no resultado.
Você pode ver isso no código de exemplo abaixo:
using System;
using static System.Console;
namespace CShp_Uri
{
class Program
{
static void Main(string[] args)
{
Uri uri1 = new Uri("http://www.macoratti.net/c_uri1.htm");
Uri uri2 = new Uri("http://www.macoratti.net/images/represa1.jpg");
WriteLine($"uri1 : {uri1}");
WriteLine($"uri2 : {uri2}");
WriteLine();
WriteLine($"uri1.MakeRelativeUri(uri2) : {uri1.MakeRelativeUri(uri2)}");
WriteLine($"uri2.MakeRelativeUri(uri1) : {uri2.MakeRelativeUri(uri1)}");
ReadLine();
}
}
}
|
Extraindo o lado esquerdo de uma URI
O método GetLeftPart permite extrair partes de uma URI. Ele recupera uma ou mais partes de uma URI, começando pelo esquema e trabalhando da esquerda para a direita. Você determina qual é a última parte a retornar passando um valor da enumeração UriPartial.
Essa enumeração define as partes de uma URI para o método GetLeftPart. Os valores são:
Nome do membro |
Descrição |
---|---|
Authority | Não inclui o delimitador de caminho. |
Path | Incluir quaisquer delimitadores na URI original até o delimitador de consuulta o fragmento. |
Query | Inclui o Path, a consulta e o delimitador. |
Scheme |
Exemplo:
|
No código a seguir temos um exemplo de utilização desse recurso:
using System;
using static System.Console;
namespace CShp_Uri
{
class Program
{
static void Main(string[] args)
{
Uri uri = new Uri("http://macoratti:password@authority.com:5555/path/pagina.aspx?valor1=10&valor2=20#fragment");
Console.WriteLine(uri.GetLeftPart(UriPartial.Scheme));
Console.WriteLine(uri.GetLeftPart(UriPartial.Authority));
Console.WriteLine(uri.GetLeftPart(UriPartial.Path));
Console.WriteLine(uri.GetLeftPart(UriPartial.Query));
ReadLine();
}
}
}
|
Na próxima parte do artigo veremos outros recursos da classe Uri.
Pegue o código do projeto aqui : CShp_Uri.zip
'E o testemunho é
este: que Deus nos deu a vida eterna; e esta vida está em seu Filho.(Jesus
Cristo)'
1 João 5:11
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 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
VB .NET - Obtendo informações de uma web page - Macoratti.net
C# - Enviando arquivos para o servidor via FTP - Macoratti.net