C# -  Encurtando URLs com a API Bitly


Neste artigo veremos como podemos usar a API Bitly para encurtar uma URL em um projeto Windows Forms usando a linguagem C#.

Para navegar na web você precisa muitas vezes digitar URLS em seu navegador. Pensando nisso existe uma preocupação de tornar as URLs curtas, fáceis de lembrar e digitar. Infelizmente existem endereços que não seguem esse princípio.

Sabe aquelas URLs looonngas que nenhum mortal em sã consciência teria a coragem de digitar, mas, que por força da necessidade, tem que ser digitada ?

Felizmente existem diversos aplicativos e sites na web que oferecem o serviço para simplificar URLs.

A disseminação das URLs curtas começou com o aumento de popularidade do Twitter. Devido à limitação de 140 caracteres imposta pelo microblog, não tardou a aparecer uma solução para enviar links nos posts sem comprometer o restante da mensagem.

Neste artigo eu vou mostrar como podemos usar os recursos da API do Bitly para encurtar URLs.

Recursos usados:

Obtendo um nome de usuário e chave no Bitly

Como vamos usar a API do Bitly será preciso acessar o site https://bitly.com/  e se cadastrar.

Após você concluir o seu cadastro acesse link https://bitly.com/a/your_api_key onde irá obter o seu BITLY USERNAMEBITLY API KEY.

Copie os valores pois eles serão usados em nosso projeto para encurtar URLs.

Criando o projeto Windows Forms

Abra o VS 2013 Express for desktop clique em New Project;

Selecione Visual C# ->Windows Forms Application, informe o nome Encurtando_Urls e clique no botão OK;

Vamos incluir em nosso projeto uma referência ao namespace System.Web pois vamos usar no projeto o método UrlEnconde da classe HttpUtility para codificar a URL que desejamos encurtar.

No menu PROJECT clique em Add Reference;

A seguir clique em Assemblies e selecione o namespace System.Web marcando-o conforme a figura abaixo:

A seguir vamos incluir no formulário form1.cs a partir da ToolBox os seguintes controles:

Disponha os controles no formulário conforme o leiaute da figura a seguir:

Agora vamos criar declarar no início do formulário os namespaces usados no projeto:

using System;

using System.IO;

using System.Net;

using System.Text;

using System.Windows.Forms;

using System.Xml;

using System.Web;
 

A seguir logo após a declaração da classe Form1 (após o construtor) vamos definir as variáveis que iremos usar em nosso projeto:


string CodigoStatus = string.Empty;   // armazena o codigo do staus da resposta do servidor
string TextoStatus = string.Empty;    // armazena o texto do status da resposta do servidor
string urlEncurtada = string.Empty;   // armazena a url encurtada
string urlOriginal = string.Empty;    // armazena a url original

Agora no evento Click do botão de comando - Encurtar URL usando a API Bitly - inclua o seguinte código:

        private void btnEncurtarUrl_Click(object sender, EventArgs e)
        {
            if (txtUrlOriginal.Text == string.Empty)
            {
                MessageBox.Show("Informe a URL que deseja encurtar...", "URL", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtUrlOriginal.Focus();
                return;
            }
            urlOriginal = txtUrlOriginal.Text;                       // a url que desejamos simplificar
            XmlDocument xmlDoc = new XmlDocument();        // O documento XML que será usado para tratar a reposta do servidor
            try
            {
                //Faz uma solicitação ao bitly
                WebRequest request = WebRequest.Create("http://api.bitly.com/v3/shorten");
                //passa os dados do usuário, a chave da API e a url original
                byte[] data = Encoding.UTF8.GetBytes(string.Format("login={0}&apiKey={1}&urlOriginal={2}&format={3}",
            "xxxxxxxxxxxx",                                            // seu nome de usuário na bitly
            "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",                // sua chave para suar a API (API key)
            HttpUtility.UrlEncode(urlOriginal),                     // Aplicar Encode na url que vamos encurtar
            "xml"));                                                               // O formato da resposta que desejamos que o servidor responda
                //envia os dados via POST 
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = data.Length;
                using (Stream ds = request.GetRequestStream())
                {
                    ds.Write(data, 0, data.Length);
                }
                //lê o arquivo XML obtido so servidor
                using (WebResponse response = request.GetResponse())
                {
                    using (StreamReader sr = new StreamReader(response.GetResponseStream()))
                    {
                        xmlDoc.LoadXml(sr.ReadToEnd());
                    }
                }
                // Extrai as informações do arquivo XML resposta obtido do servidor
                CodigoStatus = xmlDoc.GetElementsByTagName("status_code")[0].InnerText;
                TextoStatus = xmlDoc.GetElementsByTagName("status_txt")[0].InnerText;
                urlEncurtada = xmlDoc.GetElementsByTagName("url")[0].InnerText;
                urlOriginal = xmlDoc.GetElementsByTagName("long_url")[0].InnerText;
                //exibe os valores obtidos
                txtUrlEncurtada.Text = urlEncurtada;
                lblCodigoStatus.Text = "Código status = " + CodigoStatus;
                lblTextoStatus.Text = "Status = " + TextoStatus;
            }
            catch(Exception ex)
            {
                MessageBox.Show("Ocorreu um erro durante o processamento. Verifique e tente novamente", "Processamento URL", MessageBoxButtons.OK, 
MessageBoxIcon.Error);
            }
        }

O código acima é bem simples e já esta comentado. Atente para usar os seus dados de usuário obtidos no Bitly.

Executando o projeto e realizando um teste com um url, obtemos o seguinte resultado:

Pegue o projeto completo aqui:  Encurtando_Urls.zip

Todavia digo-vos a verdade, que vos convém que eu vá; porque, se eu não for, o Consolador não virá a vós; mas, quando eu for, vo-lo enviarei.
E, quando ele vier, convencerá o mundo do pecado, e da justiça e do juízo.

João 16:7-8

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