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

Développement de jobs Discussion :

Interroger l'api soap de magento avec Talend


Sujet :

Développement de jobs

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Interroger l'api soap de magento avec Talend
    Bonjour à tous,
    Je veux interroger l’api SOAP de Magento pour récupérer la liste des catégories et le panier (ajout + modification) en utilisant Talend. Pour cela, il faut d’abord récupérer un id de session depuis magento, le stocker et ensuite l’utiliser pour appeler l’api.
    J’ai essayé avec twebserviceinput mais ça ne marche pas , et vu que c’est la première fois que je l’utilise je ne sais pas comment faire.
    Si quelqu’un peut m’aider ça serait vraiment génial. Merci d’avance

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par MG2014 Voir le message
    Bonjour à tous,
    Je veux interroger l’api SOAP de Magento pour récupérer la liste des catégories et le panier (ajout + modification) en utilisant Talend. Pour cela, il faut d’abord récupérer un id de session depuis magento, le stocker et ensuite l’utiliser pour appeler l’api.
    J’ai essayé avec twebserviceinput mais ça ne marche pas , et vu que c’est la première fois que je l’utilise je ne sais pas comment faire.
    Si quelqu’un peut m’aider ça serait vraiment génial. Merci d’avance
    Tu nous aides pas vraiment.

    As-tu déjà ajouté l'URL du WSDL dans ton twebserviceinput ?
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par supergeoffrey Voir le message
    Tu nous aides pas vraiment.

    As-tu déjà ajouté l'URL du WSDL dans ton twebserviceinput ?
    Oui j'ai bien ajouté l'URL du WSDL, mais je ne sais pas comment faire pour pouvoir s'authentifier sur l'api Soap de magento et recuperer le jeton de session qui sera utilisé pour appeler le service web.
    En php c'est comme suit:

    $proxy = new SoapClient('http://magentoDomain/api/v2_soap/?wsdl');

    $sessionId = $proxy->login('apiUser', 'apiKey'); // TODO : change login and pwd if necessary
    $result = $proxy->shoppingCartCreate($sessionId, '3');

    var_dump($result);

    Par contre avec twebserviceinput je ne sais pas comment cela fonctionne.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Après pas mal d'essais, j'ai trouvé sur Internet une méthode pour interroger le WebService de Magento.
    J'ai importé le WSDL dans un projet, puis avec un Composant tWebServiceInput:
    1. dans l'onglet Avancé j'ai coché l'option Advanced Use
    2. J'ai mis le code suivant:
    Code java : 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
     
     String url = "http://UrlDuServeur/index.php/api/v2_soap";
     routines.Mage_Api_Model_Server_V2_HandlerPortType portType = null;
     SalesOrderListEntity[] entity = null;
     SalesOrderEntity orderInfo = null;
     
     portType = new routines.MagentoServiceLocator().getMage_Api_Model_Server_V2_HandlerPort(new java.net.URL(url));
     portType.startSession();
     
     context.SessionId = portType.login("xxx","yyy");
     AssociativeEntity ae1 = new AssociativeEntity("eq", "1");
     
     ComplexFilter cof1 = new ComplexFilter("maj", ae1);
     ComplexFilter[] cof = {cof1};
     
     Filters filters = new Filters(null,cof);
     
     entity = portType.salesOrderList(context.SessionId,filters);
     
     output_row.Donnees = "";
     for(int i = 0 ; i < entity.length; i++)
     {
    	if (output_row.Donnees != "")
    	{
    		output_row.Donnees = output_row.Donnees + ";";
    	}
       	output_row.Donnees = output_row.Donnees + entity[i].getIncrement_id();
     
     }

    Ainsi j'arrive à récupérer une liste de commande, liste qui passe ensuite dans un tNormalize puis un tJavaRow qui récupère le contenu de la commande:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //Code generated according to input schema and output schema
     try
     {
    	orderInfo 	= portType.salesOrderInfo(context.SessionId, input_row.Donnees);
    	output_row.OrderId 			= "&" + orderInfo.getOrder_id();
    	output_row.ClientId			= "@" + orderInfo.getCustomer_id();
     
     }
     catch(Exception e)
     {
     }

    Ce n'est encore que du tâtonnement puisqu'on débute avec Talend.

    Tatayo.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci Tatayo, je vais essayer ça.

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour Tatayo,
    J’ai essayé ta méthode mais elle me renvoie plein d’erreurs, certainement que j'ai loupé beaucoup d'étapes. Voici les erreurs :

    Nom : err talend.PNG
Affichages : 704
Taille : 9,8 Ko

    Nom : er talend.PNG
Affichages : 789
Taille : 37,1 Ko

    J’ai aussi quelques questions:
    1. Dans quelle partie et comment importer le wsdl dans le projet ?
    2. Ou faut-il insérer le 2 ème code ?
    3. Est-ce qu’il faut paramétrer le tNormalize et le tJavaRow car je ne les ai jamais utilisés ?
    4. Ou dois-je déclarer « Donnees » de output_row.Donnees et sessionId ?
    5. Avant d’insérer le premier code, faut il cliquer sur le bouton à coté de WSDL2JAVA? car lorsque je clique dessus il me renvoie cette erreur: Erreur dans le nom du job
    Cdt,
    MG2014

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    (Je creuse dans ma mémoire pour tout retrouver...).
    Il me semble que j'ai donné le chemin du WSDL au composant tWebServiceInput, et qu'effectivement j'ai utilisé WSDL2Java. Mais j'avoue que je ne suis pas sûr de moi, vu le nombre d'essais que j'ai du faire avant d'y arriver !
    J'ai dans code/routines/test/tWebServiceInput_1 tout un tas de classes Java, dont par exemple le "Mage_Api_Model_Server_V2_HandlerPortType". J'imagine que c'est soit le Advance Use, soit le bouton WSDL2Java qui les a générées.

    Le deuxième code se trouve dans le tJavaRow qui suit le tNormalize. Là, j'avoue qu'il y a peut-être plus simple et/ou efficace, je débute franchement dans Talend.

    Pour le tNormalize, j'ai juste indiqué le séparateur (ici un ";", c'est celui qui est dans le code du tWebServiceInput), et le schéma de sortie (une simple chaine).

    SessionId est une variable de Context, et Donnees est la colonne de sortie du tNormalize et du tWebserviceInput.

    Je me suis basé sur cette discussion pour démarrer.

    Tatayo.

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour Tatayo,

    J'ai refais ta méthode plusieurs fois mais j'ai toujours cette erreur:
    Nom : routines.PNG
Affichages : 733
Taille : 15,6 Ko

    Et il genere que ces routines, pas de "Mage_Api_Model_Server_V2_HandlerPortType"

    Nom : routiness.PNG
Affichages : 840
Taille : 56,7 Ko

    As-tu une idée d'ou vient le problème?

    Bonne journée

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Honnêtement je n'en ai aucune idée...
    Voici ce qui a été généré dans mon projet:
    Nom : Talend.jpg
Affichages : 879
Taille : 376,7 Ko
    Il faudrait vérifier si le WSDL est bien complet, car j'ai bien un Mage_Api_Model_Server_V2_HandlerPortType dans le WSDL que je récupère depuis "mon" site.

    Tatayo.

Discussions similaires

  1. API de composants graphiques avec MIDP
    Par nouknouk dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 14/06/2007, 23h09
  2. Processus de chargement des données (avec talend)
    Par szoubir dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 27/04/2007, 12h17
  3. [Web Service][SOAP] [Nusoap] compatibilité avec autre language
    Par alexfrere dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 01/02/2007, 11h01
  4. [Web Service][SOAP] Web services avec NuSoap
    Par linar009 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/01/2007, 14h41
  5. (Débutant API) Utilisation de Richedit avec les APIs
    Par LibrairieSI dans le forum Windows
    Réponses: 2
    Dernier message: 10/08/2005, 16h53

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