Google url shortener est le service lancé en 2010 par Google qui permet de réduire vos longues urls en urls très courtes, le premier service de ce type date de 2001 et l’un des plus connus à ce jour reste TinyURL qui date de 2002.
Si vous souhaitez réduire vos urls par Google il faut donc se rendre sur le site, saisir l’url à réduire, cliquer sur un bouton et hop, l’url correspondante raccourcie apparaît, vous n’avez plus qu’à la copier pour l’utiliser où bon vous semble (quelques réserves).
Qu’en est-il si vous voulez proposer à vos utilisateurs la réduction d’url par Google directement depuis votre application ou site web ?
Depuis le début d’année 2012, Google propose une API nous permettant d’utiliser ce service en le programmant, sur cette page vous verrez un exemple d’utilisation selon votre langage, cependant la méthode proposée en Java me semble peu pratique et compliquée, d’autant plus qu’elle nécessite l’utilisation de nombreux jars.
Je vais donc vous proposer la façon que j’ai choisie pour utiliser de façon simple l’API de Google url shortener :
- le paramètre key=API_key n’est pas obligatoire à la fin de l’url, cependant il est nécessaire si vous souhaitez connaître suivre les reports et statistiques sur votre console Google apis
- seule la bibliothèque Jackson est nécessaire (vous pouvez en utiliser une autre) pour parser le flux JSON reçue par l’appel du service Google
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
public class ShortenerUrlUtil {
public static final String GOOGLE_SHORTENER_URL = "https://www.googleapis.com/urlshortener/v1/url?key=API_key";
public static String shortenUrl(String longUrl) {
String data = "{\"longUrl\": \"" + longUrl + "\"}";
try {
// création d'une connection HTTP
URL url = new URL(GOOGLE_SHORTENER_URL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/json");
// appel de l'API
OutputStreamWriter output = new OutputStreamWriter(connection.getOutputStream());
output.write(data);
output.flush();
// réception de la réponse au format JSON
BufferedReader response = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String result = "";
String line;
while ((line = response.readLine()) != null) {
result += line;
}
// interprétation du flux JSON pour extraire l'url réduite
ObjectMapper mapper = new ObjectMapper();
Map map = mapper.readValue(result, Map.class);
output.close();
response.close();
return (String) map.get("id");
} catch (Exception e) {
return longUrl;
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println(shortenUrl("http://magicsupremacy.fr/#!/deck"));
}
}





Les internautes dans le monde
Mimie 21 mai 2012 à 18:16
Voici le lien des explications détaillées pour les développeurs qui souhaitent utiliser cette API.
Consultant webmarketing 31 mai 2012 à 10:18
Thx !, perso je reste sur le bit.ly personnalisable.
Mais je me demande tout de même si notre ami Google ne crawlerait par hasard mieux ces url en goo.gl… m’en vait faire un test tiens.