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]
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 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.
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())
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.
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 (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.
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.