IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Intégration d'une API pour un taux de change en temps réel.


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Intégration d'une API pour un taux de change en temps réel.
    Bonjour !

    Ceci est mon premier billet ! Je suis étudiant en science informatique de niveau Collège.

    Je suis en train de coder en java sous Netbeans une classe qui permet d'obtenir en temps réel les taux de change concernant les devises. Pour ce faire j'utilise l'API : https://currencylayer.com/ en mode Gratuit. Toutefois, je n'arrive pas à implémenter l'API correctement dans la classe. Voici la classe avec un API tierce : free.currencyconverterapi.com qui a été discontinué. Je tente de le substituer avec l'api de currencylayer qui est en gras toutefois sans succès. Je met le code en référence au bas de la page.

    Voilà

    Merci d'avance pour vos réponses.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    
    public class BanquedeMonaco 
    {
            
              public static void main(String args[]) {
    
            // converting 1000 Euro to US Dollar
            System.out.println("Euro/US Dollar: " + findExchangeRateAndConvert("CAD", "EURO", 1000));
    
            // converting 1000 US Dollar to Euro
            System.out.println("US Dollar/Euro: " + findExchangeRateAndConvert("CAD", "USD", 1000));
    
            // converting 1000 US Dollar to Indian Rupee
            System.out.println("US Dollar/Indian Rupee: " + findExchangeRateAndConvert("CHF", "EURO", 1000));
    
            // converting 1000 Indian Rupee to US Dollar
            System.out.println("Indian Rupee/US Dollar: " + findExchangeRateAndConvert("GBD", "USD", 1000));
        }
       
        private static Double findExchangeRateAndConvert(String from, String to, int amount) {
            try {
                //Yahoo Finance API
                
                URL url2 = new URL("http://free.currencyconverterapi.com/api/v5/convert?q=CAD_EUR&compact=y"+ from + to + "=X");
                URL url3 = new URL("http://free.currencyconverterapi.com/api/v5/convert?q=USD_EUR&compact=y"+ from + to + "=X");
                URL url4 = new URL("http://free.currencyconverterapi.com/api/v5/convert?q=USD_YEN&compact=y"+ from + to + "=X");
                
                
      URL url = new URL("http://apilayer.net/api/live?access_key = 36638440b3ca2bb82a5a6cbab38d98ca& source = GBP" + from + to + "=X") )       
                    
                
                BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
                String line = reader.readLine();
                if (line.length() > 0) {
                    return Double.parseDouble(line) * amount;
                }
                reader.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            return null;
        }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,



    Pour l'ancienne API, gratuite, voici comment tu construis l'URL d'appel de l'API :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"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 :
    Code json : Sélectionner tout - Visualiser dans une fenêtre à part
    {"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.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Août 2018
    Messages : 7
    Points : 7
    Points
    7
    Par défaut format json
    Bonjour voici mon code final,

    toutefois j'ai besoin des librairies org.apache et org.apache.commons.io.IOUtils pour netbeans

    Pouvez vous m'indiquer ou je peux les trouver ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    import org.apache.commons.io.IOUtils;
    import org.json.JSONObject;
    import java.net.URL;
     
    public class COUR_CHANGE {
     
        public static void main(String[] args) throws MalformedURLException {
     
     
    URL url = new URL(
        "http://jsonrates.com/get/?"+
        "from=USD"+
        "&to=EUR"
    );
    String data = IOUtils.toString(url);
    JSONObject json = new JSONObject(data);
    Double rate = json.getDouble("rate");
     
            System.out.println("Les cours de changes sont les suivants:" + Double rate);
        }
    }

    Merci d'avance

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. [Web Service] Intégration d'une API pour site de crowdfunding
    Par pookies dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/06/2015, 10h00
  2. Récuperer le taux de change en temps réel
    Par itmak dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2009, 17h14
  3. Réponses: 5
    Dernier message: 18/07/2006, 12h10
  4. Réponses: 36
    Dernier message: 13/05/2004, 18h22
  5. JEG : jAPI : Une API pour C++Builder
    Par JEG dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/11/2003, 13h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo