Salut,
Pour l'ancienne API, gratuite, voici comment tu construis l'URL d'appel de l'API :
"http://free.currencyconverterapi.com/api/v5/convert?q=CAD_EUR&compact=y"+ from + to + "=X"
Donc, pour l'appel findExchangeRateAndConvert("CAD", "EURO", 1000), ça te donne : http://free.currencyconverterapi.com/api/v5/convert?q=CAD_EUR&compact=yCADEURO=X", alors que tu devrais obtenir à priori : http://free.currencyconverterapi.com/api/v5/convert?q=CAD_EUR&compact=y&from=CAD&to=EURO. Donc déjà, tu dois modifier la construction de l'URL pour obtenir l'URL correcte. Attention toutefois avec la concaténation et l'encodage des paramètres le cas échéant.
Ensuite, le résultat obtenu est au format JSON :
{"CAD_EUR":{"val":0.668502}}
La lecture que tu as mis en place lit simplement le flux et cherche à convertir cette valeur en double, ce qui ne peut forcément pas fonctionner (avec l'URL que tu utilises, tu obtiens le json suivant qui ne peut pas plus être converti en double :
{"query":{"count":1},"results":{"CAD_EUR":{"id":"CAD_EUR","val":0.668502,"to":"EUR","fr":"CAD"}}}
Si tu veux tester et voir le résultat, tu peux faire un System.out.println() de l'URL construite et copier/coller le résultat dans la barre d'adresse de ton navigateur, voire même juste pour le debug utiliser java.awt.Desktop.getDesktop().browse(url.toURI()); (avec url la variable de type URL), et à l'exécution ton navigateur s'ouvrira automatiquement avec le résultat visible.
L'API free.currencyconverterapi.com doit à priori savoir extraire les données et te proposer des méthodes qui décode le JSON (d'ailleurs, elle devrait même te masquer la construction de l'URL normalement). J'ai cherché rapidement et je ne vois aucune JavaDoc de cette API, ni même aucune mention d'une telle API Java. Si tu as un lien, je pourrais peut-être t'aider plus.
Cependant, comme c'est du JSON, et qu'il est assez simple (la propriété val est à priori le taux de change), tu peux utiliser une API standard de parsing de JSON (GSON, Jackson, org.json... il y a le choix) pour récupérer la valeur et faire le calcul de conversion.
Autre choix, utiliser une API REST, comme Unirest par exemple, qui te simplifiera l'appel, en particulier, en ce qui concerne l'encodage des paramètres.
Pour la nouvelle API, tu peux procéder de la même manière. L'exemple donné est fait avec Apache HttpClient, un client http standard, et org.json. Il est assez facile à convertir vers Unirest et un autre API JSON, surtout que toutes les réponses sont documentées.
Partager