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

Services Web Java Discussion :

Problème avec l'API DEEZER


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut Problème avec l'API DEEZER
    Bonjour,
    Il y a quelques années de cela, j'avais écris un petit programme en JavaFX qui exploitait l'API DEEZER. Plus précisément, j'utilisais l'URL de recherche présentée ici avec pour exemple de critère, l'artiste Eminem :
    http://api.deezer.com/search?q=eminem
    L'exploitation de cette URL permettait de récupérer la réponse au format Json. C'était parfait, l'objectif de mon petit programme étant de récupérer les jaquettes hautes résolution de mes CD-Audio.
    Hier, en faisant un peu le trie dans mes données, je suis retombé sur ce programme qui à l'époque fonctionnait parfaitement.
    En voulant vérifier si c'était toujours le cas, je me suis rendu compte que du côté de Deezer, il y a avait eu du changement dans le sens où maintenant, pour accéder à cette URL, il faut d'abord se loguer sur Deezer.
    C'est là que j'ai besoin d'aide, car je n'arrive pas à intégrer cette notion de login dans mon programme qui n'en avait pas besoin avant.
    J'ai bien évidemment à ma disposition un nom d'utilisateur et un mot de passe fonctionnels, mais je ne sais pas comment les prendre en compte.
    En clair, comment puis-je fournir mon identité avec cette URL sachant qu'au niveau Java, j'utilisais tout simplement la classe URL avec sa méthode openStream ???
    Pour être un peu plus clair, voici le code d'interrogation qui fonctionnait sans login :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String exemple = "http://api.deezer.com/search?q=aguilera+christina+lotus";
    InputStream reponseDeezer = new URL(exemple).openStream();
    JsonReader recepteurJSON = Json.createReader(reponseDeezer);
    JsonObject objetJson = recepteurJSON.readObject();
    reponseDeezer.close();
    Mais ce code qui fonctionnait bien avant qu'il ne soit nécessaire de s'identifier ne fonctionne plus aujourd'hui. Donc, je me suis créé un compte Deezer et possède aujourd'hui un nom d'utilisateur et un mot de passe fonctionnels. Comment puis-je refaire fonctionner ce code ?
    Je ne sais pas par quel bout commencer pour intégrer la notion de login à cette transaction...

    Merci pour votre aide.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Déjà, il faudrait savoir quel type d'authentification on demande. Le principe général est de fournir des headers particuliers. Il se peut qu'il faille les fournir à chaque requête, ou que la première retourne des headers (jeton, jsessionid, autre...) et qu'il faille passer ceux-ci dans les requêtes suivantes (jusqu'à expiration éventuelle, et recommencer le cycle).

    Pour affecter les headers, il va falloir que tu passes par la méthode setRequestProperty de la classe URLConnection, donc développer un peu ta ligne URL().openStream(). Pour récupérer les headers en retour, il faudra que tu utilises la classe HTTPURLConnection (méthode getHeaderField())

    Par exemple, pour une connection avec authentification de type BASIC ça donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    URL url = new URL(serviceURL);
    URLConnection connection = url.openConnection();
    // HttpURLConnection connection = (HttpURLConnection)url.openConnection(); // si tu as besoin de récupérer des headers (sinon URLConnection suffira)
    String userCredentials = "username:password"; // remplacer username et password par tes coordonnées
    String basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));
    connection .setRequestProperty ("Authorization", basicAuth);
    /**... éventuels autres paramètrages de la connection (méthode, autres headers...)**/
    stream = connection.getInputStream();
    Sinon tu peux utiliser une API genre Unirest qui te simplifiera tout ça, voire une API Java Deezer si ça existe (c'est un peu pourri qu'on ne puisse pas le savoir au moins sans avoir un compte Deezer ).
    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
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut
    Un grand merci, Joël !
    C'est ce que j'avais cru comprendre mais je m'y prenais comme un manche. Merci pour ces précisions. De plus, je ne soupçonnais pas l'existence de cette librairie Unirest qui semble être vraiment géniale puisqu'elle devrait me permettre de récupérer mon Json réponse en une seule ligne de code !
    Je n'ai pas encore testé, mais je vais le faire aujourd'hui, je ne travailles pas, alors j'en profite.
    Cependant, avec mes seules explications, il est normal que tu es eu cette réflexion :
    (c'est un peu pourri qu'on ne puisse pas le savoir au moins sans avoir un compte Deezer )
    Mais en fait, c'est parfaitement normal. En effet, leur API ne permet pas seulement de récupérer des images, elle permet aussi de récupérer les morceaux de musique entier, ou les extraits, ainsi que toutes les métadonnées qui vont avec, genre, édition, code ISBN, Dates, on peut même construire un player Deezer sur cette API. De plus, si tu utilise leur Player Deezer sur tes pages Web et que tes visiteurs finissent par s'abonner à Deezer en tant que membre premium via ta page, tu touches une commission. Donc, il y a deux niveaux. Moi j'ai opté pour un compte libre et gratuit. Donc, mon identité ne me permet pas d'accéder à l'intégralité de l'API, mais pour ce qui me concerne, je n'avais besoin que de récupérer les images des jaquettes, et les extraits de 10s de chaque morceaux avec leur durée. J'ai mis en place un système de gestion de médiathèque pour la bibliothèque interne du CE de mon employeur. Une bibliothèque animée par des retraités bénévoles à qui je me voyais mal demander de scanner plus de 2000 CD Audio, et plus de 4000 bouquins.
    D'ailleurs pour ce qui est de la récupération des jaquettes de livre et de leur résumé, je travailles sur l'API Amazone.
    Bref, je vais remettre tout cela en route, et si le code n'est pas trop long, je me ferai un plaisir de le donner ici.
    A+
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yotta Voir le message
    Mais en fait, c'est parfaitement normal[...]
    Non, mais que la doc technique détaillée ne soit pas accessible, ou le jar de l'API Java, je le comprends, mais qu'il n'y ait même pas une page d'info pour dire "voilà, on a une API Java, une API C#, une API BrainFuck, et une API Dada Ourka..." c'est abuser et absolument pas normal... Là, ça fait "si tu veux savoir si tu peux faire ce que tu veux avec notre bousin, il faut t'inscrire"...
    C'est comme si je voulais savoir si chez tel magasin d'electro-ménager, je pouvais acheter un lave-vaisselle, et qu'ils me répondent : on vous le dira si vous prenez la carte fidélité...
    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.

  5. #5
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 093
    Par défaut
    Il ne faut pas t'emporter comme ça Joël, c'est pas bon pour les artères.
    De plus, je suis une vraie bourrique !
    En effet, en y regardant de plus près, il n'y a absolument pas besoin d'utiliser un identifiant pour accéder à leur Api dans sa partie libre et gratuite. J'avais fait mon test au boulot, derrière un Proxy de m... et c'est lui qui me faisait penser à un problème d'identification. En exécutant mon code tel quel chez moi, sans passer par ce Proxy de m... ça fonctionne sans aucun problème.
    Mea culpa
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Flex3] Problème avec l'API de Logging du framework Flex 3
    Par gobgob dans le forum Flex
    Réponses: 1
    Dernier message: 26/10/2010, 10h35
  2. problème avec l'api FileDialog
    Par gnaoui_9999 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/07/2010, 15h40
  3. Problème avec l'API Quartz
    Par reeda dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 16/09/2008, 12h20
  4. Problème avec l'API "GetDlgItemText"
    Par olaf_le_preux dans le forum Windows
    Réponses: 11
    Dernier message: 18/01/2008, 10h20
  5. Problème avec les API
    Par Bertr@nd dans le forum Windows Forms
    Réponses: 20
    Dernier message: 14/07/2007, 14h53

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