Mapa Mental ITIL v3

Postado por Daniel Garcia às 22:56 TERÇA-FEIRA, 16 DE JULHO DE 2013

Prezados amigos, gostaria de compartilhar esta ferramenta que foi criada por Alexandre Basílio e gentilmente divulgado pelo Portal GSTI.

É um mapa mental da ITIL v3 muito bem elaborado abordando os conceitos da ITIL, estratégia de serviços, desenho de serviço, transição de serviço, operação de serviço e melhoria de serviço continuada.

Vale a pena verificar o excelente mapa mental produzido por Alexandre Basílio, clique abaixo e acesse: 

Mapa Mental ITIL v3 

1.5 ponto(s). Avaliado por 6 pessoas

  • Currently 1,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ITIL

ASP.NET: Consultando Endereços por CEP dos Correios Utilizando as Classes HttpWebRequest e HttpWebResponse

Postado por Daniel Garcia às 07:54 QUARTA-FEIRA, 25 DE JANEIRO DE 2012

Vejo em muitos fóruns, posts de desenvolvedores procurando por Webservices e outras formas de incorporar a consulta de endereços por CEP em seus sistemas. No entanto são poucas as maneiras disponíveis de forma gratuita para alcançar tal tarefa.

Então resolvi estudar uma forma simples de conseguir tal informação e consumi-la em uma aplicação .NET.

Para isso é necessário utilizar as classes HttpWebRequest e HttpWebResponse, ambas pertencentes ao namespace System.Net.

Um breve descritivo: A classe HttpWebRequest permite que uma aplicação faça uma requisição à um site, acesse um site. Já a classe HttpWebResponse é responsável por receber/tratar a resposta a essa requisição. Tudo isso ocorre, da mesma forma de quanto estamos entrando em um site a partir de um browser.

Vamos ao que interessa!

Para ilustrar essa funcionalidade optei por uma página ASP.NET (Web Form) bastante simplificado. Contendo: 1 TextBox e 1 Button para informar e submeter a pesquisa pelo CEP e 1 Literal para exibir o HTML resultante da consulta efetuada ao site dos correios.

Tela de Pesquisa:

Segue código HTML do Web Form: 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <
head runat="server">
        <title>Consulta de Endereos por CEP</title>
    </
head>
<
body>
    <form id="form1" runat="server">
        <div>
            <h2>Consulta de Endereos por CEP</h2>
            CEP:
            <asp:TextBox ID="TextBoxCEP" runat="server"></asp:TextBox>
            <asp:Button ID="ButtonConsulta" runat="server" Text="Consultar" OnClick="ButtonConsulta_Click" />
            <br /><br />
            <asp:Literal ID="LiteralResultado" runat="server"></asp:Literal>
        </div>
    </form>
</
body>
</
html>

Segue código fonte comentado passo a passo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using System.IO;
using System.Text;

public partial class _Default : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
    }

    protected void ButtonConsulta_Click(object sender, EventArgs e)
    {
        this.CosultarCEP(TextBoxCEP.Text);
    }

    private void CosultarCEP(string cep)
    {
        // Efetua a requisio ao site passando o CEP como querystring
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do?Metodo=listaLogradouro&CEP=" + cep + "&TipoConsulta=cep");
        int count;
        byte[] buf = new byte[1000];
        StringBuilder sb = new StringBuilder();
        string temp;

        // Recebe a resposta da requisio
        HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();

        // Transforma a requisio em um Stream
        Stream stream = httpWebResponse.GetResponseStream();

        // Carrega e despeja um buffer (array de bytes), apendando em um StringBuider enquanto o buffer não estiver vazio
        do
        {
            count = stream.Read(buf, 0, buf.Length);
            temp =
Encoding.Default.GetString(buf, 0, count).Trim();
            sb.Append(temp);

       
}
while (count > 0);

        // Converte o String Buider para String
        string html = sb.ToString();

        // Seleciona o String HTML de acordo com os delimitadores
        html = this.retornarHtml(html, "<?xml version = '1.0' encoding = 'ISO-8859-1'?>", "<table width=\"645\">");
        // Exibe o HTML em um controle Literal
        LiteralResultado.Text = html; 
    }

    // Retorna o String HTML de acordo com os delimitadores
   
private string retornarHtml(string html, string delimitadorInicial, string delimitadorFinal)
    {
        int posInicial;
       
int posFinal;

        // Verifica se o delimitador inicial foi encontrado
        if (html.IndexOf(delimitadorInicial) != -1)
        {

            // Verifica a posio do delimitador inicial dentro do String HTML (soma a quantidade de caracteres do delimitador)
            posInicial = html.IndexOf(delimitadorInicial) + (delimitadorInicial.Length + 1);

            // Verifica a posio do ltimo caracter do delimitador final
            posFinal = html.IndexOf(delimitadorFinal, posInicial) - posInicial;

            // Retorna a String HTML de acordo com a posio inicial e a posio final
            html = html.Trim().Substring(posInicial, posFinal);

        }

        return html;

    }

}

Pronto! Agora basta executar a aplicação!

E válido ressaltar que o funcionamento deste mecanismo pode ser afetado caso haja alguma mudança na forma de consulta no site de onde origina a informação.

1.6 ponto(s). Avaliado por 32 pessoas

  • Currently 1,59375/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: ,

ASP.NET | C#

Sobre o Autor

Daniel Garcia - MCP, MCTS, MCPD
Meu nome é Daniel Garcia, venho atuando no mercado de tecnologia há mais de uma década. Durante esse tempo tive a oportunidade de trabalhar com diversas tecnologias, principalmente Microsoft. Conquistei os títulos: MCP, MCTS, MCDP e MCT. Desde então, venho contribuindo com toda a Comunidade, divulgando meu conhecimento das tecnologias Microsoft.