domingo, 29 de novembro de 2009

Convertendo Array de Bytes em String

Fala, galera!!

Continuando a série "Códigos da Vida" :)
Recentemente, em um dos projetos que estou participando, me deparei com a necessidade de consultar dados em uma base LDAP, mais precisamente no NDS.

Ao contrário do Active Directory que me retorna uma string, o NDS me retornava um array de bytes ao consultar dados em um de seus atributos.

Para obter a string retornada precisei converter esse array de bytes em uma string.

Segue o código para fazer esta conversão:

        Dim Valor as string
        Dim utf As New System.Text.UTF7Encoding()
        Valor = utf.GetString("Aqui entra o seu array de bytes")

É isso ai... Simples como deve ser.

Um abraço e até a próxima!!

segunda-feira, 23 de novembro de 2009

Corrigindo problemas de acentuação ao utilizar HttpWebRequest

Fala, galera!!

Recentemente publiquei aqui no blog um código mostrando como fazer um HttpRequest utilizando o .net.
Esses dias me deparei com um problema de acentuação.
Sempre que as palavras retornadas no meu httpRequest tivessem acentos o mesmo era substituído por um outro caracter.

A correção para esse problema é bem simples.
Basta especificar o encoding.

Segue a correção:


Dim myRequest As HttpWebRequest = WebRequest.Create("http://www.algumaURL.com.br")
            Dim resp As HttpWebResponse = myRequest.GetResponse()
            Dim ResponseEncoding As Text.Encoding = Text.Encoding.GetEncoding(resp.CharacterSet)

            Dim sr As New StreamReader(resp.GetResponseStream(), ResponseEncoding)
            Retorno = sr.ReadToEnd()
            sr.Close()

O código em negrito é o código que precisei adicionar ao antigo código postado no blog.

Um abraço e até a próxima!!

domingo, 15 de novembro de 2009

Obtendo informações de ambiente

Fala, galera!!

O .net fornece uma classe muito interessante onde podemos obter algumas informações de ambiente onde a aplicação está sendo executada e dos usuários que estão acessando a aplicação. Tais como: Quantidade de processadores, Versão do Sistema Operacional, Ler variáveis de ambiente, Criar novas variáveis de ambiente e por ai vai.

É a classe System.Environment.

Segue um exemplo de sua utilização:

response.write(Environment.OsVersion.Platform)
response.write(Environment.HostName)

A classe é bem interessante e possui uma série de informações úteis.

Um abraço e até a próxima!!

quarta-feira, 4 de novembro de 2009

Montando menus dinâmicos com o controle de Menu do .net

Fala, galera!!

Segue um código para montagem de menus dinâmicos utilizando o controle de menu do .Net.
O código é bem simples. Todo o menu é baseado em XML.
Basta entender a estrutura do mesmo.

Vamos ao código:


<?xml version="1.0" encoding="utf-8" ?>
<Home>
    <Menu url="" text="Secao1">
        <SubMenu url="" text="Secao1.1">
            <SubMenu url="" text="Secao1.1.1">
                <SubMenu url="" text="Secao1.1.1.1">
                    <SubMenu url="conteudo.aspx?CodSecao=31" text="Secao1.1.1.1.1">
                    </SubMenu>
                </SubMenu>
            </SubMenu>
            <SubMenu url="conteudo.aspx?CodSecao=23" text="Secao1.1.3">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao1.2">
            <SubMenu url="conteudo.aspx?CodSecao=24" text="Secao1.2.1">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao1.3">
            <SubMenu url="" text="Secao1.3.1">
                <SubMenu url="conteudo.aspx?CodSecao=33" text="teste">
                </SubMenu>
            </SubMenu>
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao2">
        <SubMenu url="" text="Secao2.1">
            <SubMenu url="conteudo.aspx?CodSecao=27" text="Secao2.1.1">
            </SubMenu>
            <SubMenu url="conteudo.aspx?CodSecao=28" text="Secao2.1.2">
            </SubMenu>
        </SubMenu>
        <SubMenu url="" text="Secao2.2">
            <SubMenu url="conteudo.aspx?CodSecao=29" text="Secao2.2.1">
            </SubMenu>
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=11" text="Secao2.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao3">
        <SubMenu url="conteudo.aspx?CodSecao=12" text="Secao3.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=13" text="Secao3.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=14" text="Secao3.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao4">
        <SubMenu url="conteudo.aspx?CodSecao=15" text="Secao4.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=16" text="Secao4.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=17" text="Secao4.3">
        </SubMenu>
    </Menu>
    <Menu url="" text="Secao5">
        <SubMenu url="conteudo.aspx?CodSecao=18" text="Secao5.1">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=19" text="Secao5.2">
        </SubMenu>
        <SubMenu url="conteudo.aspx?CodSecao=20" text="Secao5.3">
        </SubMenu>
    </Menu>
</Home>

O menu acima representa uma tabela que possui auto relacionamento.


Agora vamos falar um pouco sobre a estrutura do XML.

Como todo arquivo XML, foi necessário criarmos um elemento Root(raiz).
No nosso caso, este elemento é o elemento <home>.

Agora vamos aos itens que se repetem dentro da estrutura.

O elemento <Menu> representa o nível mais alto do menu. O nível "pai", digamos assim.
O elemento <SubMenu> é o que chamamos de "filho".

Um <Menu> pode possuir quantos <SubMenu> desejar.
Um <SubMenu> pode possuir novos <SubMenu> dentro dele. Permitindo que você crie N níveis de acordo com a hierarquia do seu site.

A propriedade text define o texto que será exibido.
A proprieadade url define o link para onde o seu menu irá apontar.
Se a propriedade url estiver em branco, o menu será renderizado sem ser "clicável".

Agora basta criar seu método para gerar o arquivo XML.
Para isso, você pode utilizar o LINQ to XML, a classe System.XML ou até mesmo gerar uma string em formato XML e salvar em um arquivo com a extensão ".xml".

Um abraço e até a próxima!!