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 :

  1. 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
  2. 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"));
	}
}

{ 2 commentaires… add one }

Participez !

Article suivant:

Article précédent:

Derniers Commentaires

  • Théo { Il me semble que le raccourci est un peu rapide... ne pas faire l'amalgame entre... } – 17 juin, 11:10
  • Inès { Et un plaisir de vous lire ! En vous remerciant de votre visite. Inès, stagiaire... } – 17 juin, 9:28
  • Greg { Bonjour LiveOptim, Merci de votre intervention, en effet cette V2 semble vraiment une bonne nouvelle... } – 13 juin, 13:36
  • stephen { Merci pour ton aide. Exact, ma page est en mode Quirks et effectivement cela fonctionne... } – 13 juin, 13:01
  • Mimie { Chez moi cela fonctionne bien (testé IE9 et IE10), vérifie bien que le "Mode navigateur"... } – 13 juin, 11:51
  • LiveOptim { Bonjour et merci de ce suivi sérieux incrémenté par votre benchmark. Notre commentaire concernera uniquement... } – 13 juin, 11:45
  • stephen { Bonjour Sur firefox ok, safari ok, IE 9 : marche pas :/ Vraiment dommage... Idem... } – 13 juin, 11:25
  • LiveOptim { Bonjour, Merci pour ce billet. Nous sommes à votre entière disposition si vous avez des... } – 08 juin, 21:29

Catégories