Caro(a) Internauta, gostaria de falar hoje como usar API do Google para encurtar as URLs de sites, artigos, aplicativos e tudo mais. Além de encurtar, você pode controlar quantos cliques tiveram no decorrer do tempo.

Características: 
Linguagem C#.NET
Plataforma ASP.NET
Ferramenta: Visual Studio 2012
API do Google

O primeiro passo é pegar a chave no site do Google. Para usar qualquer API do Google, você precisa usar uma chave que eles mesmos fornecem ao desenvolvedor. Para isso, acesse o link http://code.google.com/intl/pt-BR/ e crie um novo projeto. Depois de criar o projeto informando o tipo e o que ele vai fazer, basta acessar o link API Access.

Basta copiar o código e usar em seu projeto junto da variável chamada key descrito neste artigo. Depois de abrir o Visual Studio 2012 e criar um projeto do tipo web, dentro do arquivo default.aspx.cs gerei uma classe responsável por usar o serviço encurtador.



É necessário importar algumas classes do Framework .NET, code 1.1. O método recebe um parâmetro do tipo string com o nome da url que deseja encurtar. 

[code]
Code 1.1 – Importes
using System.Text.RegularExpressions;
using System.Net;
using System.IO;
using System.Text;
[/code]

Code 1.2 – Nome do Método
[code]
private string encurtador(string url)
[/code]

O próximo passo foi usar o HttpWebRequest com a url do Google passando como parâmetro alguns valores e a chave. Depois você define o tipo do método, GET ou POST e o tipo do conteúdo com o ContentType, code 1.2.

Code 1.2 – Informando valores para envio
[code]
string key = "xxxxxx mykey xxxxxxx";
string post = "{\"longUrl\": \"" + url + "\"}";
            string shortUrl = url;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/urlshortener/v1/url?key=" + key);

            try
            {
                request.ServicePoint.Expect100Continue = false;
                request.Method = "POST";
                request.ContentLength = post.Length;
                request.ContentType = "application/json";
                request.Headers.Add("Cache-Control", "no-cache");
[/code]

Depois que define estes parâmetros, basta enviar a requisição do Stream para pegar a resposta, code 1.3.

Code 1.3 – Usando o Stream
[code]
   using (Stream requestStream = request.GetRequestStream())
                {
                    byte[] postBuffer = Encoding.ASCII.GetBytes(post);
                    requestStream.Write(postBuffer, 0, postBuffer.Length);
                }
[/code]

Os bytes retornados são armazenados em uma variável chamada postBuffer que depois reescreve na variável passando a quantidade, code 1.3.

O próximo passo é pegar os dados e retornar ao método que chamou, code 1.4.

Code 1.4 – Pegando a resposta
[code]
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
       {
       using (StreamReader responseReader = new StreamReader(responseStream))
             {
             string json = responseReader.ReadToEnd();
                    shortUrl = Regex.Match(json, @"""id"": ?""(?.+)""").Groups["id"].Value;
}
}
}
[/code]

O dado retornado está no grupo id pela API do Google. O Regex.Match é usado para pegar o dado respondido. 

No caso de usar esse método dentro de uma rede com Proxy, é necessário passar os parâmetros de autenticação de rede, caso contrário dará erro. Segue em anexo todo o método e a chamada, code 1.5. 

Code 1.5 – Todo o método
private string encurtador(string url)
        {
            string post = "{\"longUrl\": \"" + url + "\"}";
            string shortUrl = url;
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.googleapis.com/urlshortener/v1/url?key=" + key);

            try
            {
                request.ServicePoint.Expect100Continue = false;
                request.Method = "POST";
                request.ContentLength = post.Length;
                request.ContentType = "application/json";
                request.Headers.Add("Cache-Control", "no-cache");

                using (Stream requestStream = request.GetRequestStream())
                {
                    byte[] postBuffer = Encoding.ASCII.GetBytes(post);
                    requestStream.Write(postBuffer, 0, postBuffer.Length);
                }

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    using (Stream responseStream = response.GetResponseStream())
                    {
                        using (StreamReader responseReader = new StreamReader(responseStream))
                        {
                            string json = responseReader.ReadToEnd();
                            shortUrl = Regex.Match(json, @"""id"": ?""(?.+)""").Groups["id"].Value;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                // if Google's URL Shortner is down...
                System.Diagnostics.Debug.WriteLine(ex.Message);
                System.Diagnostics.Debug.WriteLine(ex.StackTrace);
            }
            return shortUrl;
        }

protected void Page_Load(object sender, EventArgs e)
        {
            encurtador("http://www.ecode10.com");
        }

Para acessar o site do Google a fim de ver as urls geradas, basta digitar o endereço http://goo.gl/ e logar com seu usuário.

Espero que tenha gostado e qualquer dúvida pode entrar em contato pelo site.