![]() |
![]() |
Accueil > Intranet Michel Buffa > Cours web 2.0 2009 > Utilisations d'API du web 2.0 et Web Services REST > TP : utilisation d’APIS de sites populaires du web 2.0
TP : utilisation d’APIS de sites populaires du web 2.0De $1
IntroductionDans ce TP vous allez créer un moteur de recherche faisant appel à différentes API du web. Vous commencerez par utiliser YouTube au travers de l’API gdata de Google, qui permet de converser avec l'ensemble des services de google (search, maps, youtube, etc.). Vous complèterez ensuite votre application en associant également les services de Flickr pour récupérer en plus des vidéos correspondant à votre recherche, des photos Remarque : ce TP propose des requêtes en Ajax "basique", vous pourrez avantageusement les remplacer par des reqûetes jQuery ou Dojo. On vous propose d'utiliser des APIs java pour consommer les web services, au travers d'une Servlet. Si vous terminez plus tôt imaginez comment vous pourriez faire avec une page JSF et un backing bean. Création d'une application mashup de YouTube et Flickr
<input type="text" name="query" id="query"/> <input type="button" value="Chercher" onclick="search();" /> <div id="search_results"></div>
var req; function search(start){ var query = document.getElementById("query"); var url = "search?query="+ query.value; //try with Mozilla, opera, etc. if (window.XMLHttpRequest){ req = new XMLHttpRequest(); } //else IE else if (window.ActiveXObject){ req = new ActiveXObject("Microsoft.XMLHTTP"); } req.onreadystatechange = callback; req.open("GET",url,true); req.send(null); } function callback(){ var div = document.getElementById('search_results'); if (req.readyState==4){ if (req.status == 200){ //it works: div.innerHTML = req.responseText; }else{ //problem: div.innerHTML = "research failed"; } } }
<script language="JavaScript" src="ajaxSearch.js"></script>
Voici le code proposé pour la servlet : protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { String searchTerms = request.getParameter("query"); out.write("<b>results for " + searchTerms + "<br/>"); YouTubeService service = new YouTubeService("gdataSample-YouTube-2"); YouTubeQuery query = new YouTubeQuery(new URL(VIDEOS_FEED)); query.setStartIndex(1); query.setMaxResults(20); query.setFullTextQuery(searchTerms); VideoFeed videoFeed = service.query(query, VideoFeed.class); if (videoFeed != null) { for (VideoEntry ve : videoFeed.getEntries()) { YouTubeMediaGroup mediaGroup = ve.getMediaGroup(); if (mediaGroup != null) { String titre = ve.getTitle().getPlainText(); List<MediaThumbnail> thumbs = mediaGroup.getThumbnails(); ve.getEtag(); out.write("<div class=\"video\"><br/>"); out.write("<a href=\"" + ve.getHtmlLink().getHref() + "\" title=" + titre + "><img src=\"" + thumbs.get(0).getUrl() + "\"></a>"); out.write("<br/></div>"); } } } } catch (Exception e) { e.printStackTrace(); } finally { out.close(); } } Ajoutez quelques variables de classeDans votre servlet il vous faudra aussi quelques variables de classe. Au passage, toutes ces explications se trouvent dans le tutorial Getting Started de l'utilisation de l'API de YouTube en java. // The name of the server hosting the YouTube GDATA feeds public static final String YOUTUBE_GDATA_SERVER = "http://gdata.youtube.com"; // The URL of the "Videos" feed public static final String VIDEOS_FEED = YOUTUBE_GDATA_SERVER + "/feeds/api/videos"; // The URL of the "Standard" feed public static final String STANDARD_FEED = YOUTUBE_GDATA_SERVER + "/feeds/api/standardfeeds/"; Pour que ça compile sans erreursVotre servlet est truffée d'erreurs, c'est normal il faut rajouter à votre projet les bonnes librairies (les jars de l'API de YouTube + les imports nécessaires dans la Servlet). Ajoutez à votre projet les librairies de l’API YoutubePour que votre projet compile, il faut ajouter dans les bibliothèques du projet les fichiers .jar nécessaires. Il faut d’abord récupérer la librairie officielle gdata de google : http://code.google.com/p/gdata-java-client/ . Récupérez le zip de la dernière version (cf image, il se peut qu'il y ait de nouvelles versions depuis la 1.42, prenez la plus récente), dézippez le et ajoutez les jars nécessaires dans un répertoire « lib » situé à la racine de votre projet eclipse ou netbeans. Il faut également ajouter un jar supplémentaire pour l'API Google Collection utilisée par Gdata :
|
Powered by MindTouch Deki Open Source Edition v.8.08 |
google-collect-1.0-rc4.jar
Vous pouvez le dl ici:
http://google-collections.googlecode.com/files/google-collect-1.0-rc4.zip
Sinon, il y a des erreurs de ClassNotFound, etc, etc...