C# - Apresentando os recursos da classe Uri - I


 Neste artigo vou apresentar os recursos da classe Uri do namespace System da linguagem C#.

Qualquer aplicação que usa recursos em rede, sites ou arquivos remotos geralmente faz uso de Uniform Resource Identifiers ou identificadores de recursos uniformes, para localizar esses recursos. Embora estes possam ser mantidos em strings simples, o uso da classe System.Uri oferece muitos benefícios adicionais e por isso vamos apresentar nesta série de artigos os recursos dessa classe.

Um identificador de recurso uniforme (URI) é uma seqüência de caracteres que descreve a localização de um recurso, geralmente um acessado através de uma rede. Eles são mais utilizados pelos sites para identificar páginas individuais e imagens vinculadas. Por exemplo, a URI desta página é "http://www.macoratti.net/17/12/c_uri1.htm".

Você também pode encontrá-las ao localizar um arquivo ou pasta. Por exemplo, você pode ver que a seguinte URI, "file://c:/windows/system32/vfprint.dll", aponta para um arquivo local.

As URIs têm uma estrutura específica, embora as partes do URI sejam opcionais. Elas podem incluir as seguintes seções:

Às vezes, você descobrirá que uma URI é descrita como contendo quatro partes. Estas são : o esquema, a parte hierárquica, a consulta e o fragmento.

A parte hierárquica nesta descrição é a combinação da autoridade, informações do usuário e do caminho.

Recursos Usados neste artigo :

Apresentando a classe Uri

As URIs são projetadas para serem mantidos em strings simples. No entanto, processar strings para extrair partes de uma URI ou para modificar ou comparar URIs é um processo tedioso. Para resolver esse problema, o .NET Framework inclui a classe Uri como parte do namespace do System Esta classe pode ser usada para armazenar uma URI e inclui muitas propriedades e métodos que permitem que ele seja consultado e manipulado.

Podemos criar um objeto Uri que contenha uma URI usando o código abaixo. Observe que a URI que desejamos armazenar é passada para o construtor usando um parâmetro string.

using System;
using static System.Console;
namespace CShp_Uri
{
    class Program
    {
        static void Main(string[] args)
        {
            Uri uri = new Uri("http://www.macoratti.net");
            WriteLine(uri);
            ReadLine();
        }
    }
}

Quando você cria um objeto Uri dessa forma, você obtém um benefício imediato ao manter a URI em uma string.

Durante a construção, a URI fornecida é validada. Se for inválida, uma UriFormatException será lançada.

No exemplo a seguir incluímos de propósito um erro na URI usando barras invertidas ao invés de barras diretas :

Observe que foi lançada a exceção UriFormatException durante a execução do projeto pois a Uri é inválida.

URI absolutas e relativas

As URIs podem ser categorizadas como absolutas ou relativas :

As URI relativas assumem que essas partes já são conhecidas. Por exemplo, em um site, uma URI relativa pode ser usada para um link para outra página.

Quando o link for clicado, a URI relativa será combinada com a autoridade e o esquema da página na qual o link aparece para encontrar o novo recurso.

Se você tentar criar um objeto Uri para um URI relativa usando o construtor simples usado anteriormente, você descobrirá que será lançada uma exceção:

Qual o problema ?

O problema é que ao usar  o construtor com um único parâmetro ele assume que a seqüência fornecida possui uma URI absoluta.

Para criar uma Uri relativa, você tem que adicionar um segundo parâmetro, que é do tipo enumerado UriKind.

Isso especifica o tipo da URI que está sendo usada. Você pode especificar Absolute, Relative ou AbsoluteOrRelative. (A terceira dessas opções informa ao construtor que o tipo é desconhecido.)

Na próxima parte do artigo veremos outros recursos da classe Uri.

Eu sou a videira verdadeira, e meu Pai é o lavrador.
Toda a vara em mim, que não dá fruto, a tira; e limpa toda aquela que dá fruto, para que dê mais fruto.

João 15:1,2

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:


José Carlos Macoratti