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

Divalto Discussion :

[X.3 203a] Mettre en place un WebService Diva


Sujet :

Divalto

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut [X.3 203a] Mettre en place un WebService Diva
    Bonjour,

    Je débute avec Divalto, et j'ai promis à mon client une interface WebService pour pouvoir déverser des informations depuis un site web distant dans Divalto.

    J'ai donc commencé à écrire un programme Diva en me basant sur les exemples fournis.

    Seulement j'ai un souci avec la déclaration du service lui-même : lorsque le j'appelle Divalto me répond :
    Impossible de gérer la demande sans paramètre d'action valide. Indiquez une action soap valide.
    J'ai déclaré mon service depuis Harmony via "Harmony > Paramétrage > Action des services".

    Le projet Diva compile bien.

    Et je l'appelle depuis un programme C# de cette manière :
    Code CSHARP : 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
     
    string soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                    "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
                    "<soap12:Body>" +
                    "<WebServiceDiva xmlns=\"http://divaltotrt/WebServiceDiva/WebServiceDiva.asmx\">" +
                    "<action>{0}</action>" +
                    "<param>{1}</param>" +
                    "</WebServiceDiva>" +
                    "</soap12:Body>" +
                    "</soap12:Envelope>";
     
                HttpClient hc = new HttpClient();
                HttpContent content = new StringContent(string.Format(soap, "WEB_ICNT", JsonQuery));
                HttpResponseMessage m = await hc.PostAsync("http://divaltotrt/WebServiceDiva/", content);
                Console.WriteLine(m.Content.Headers.ContentLength);
                string s = await m.Content.ReadAsStringAsync();
                Console.WriteLine(s);

    "WEB_ICNT" est le nom du WebService que j'ai déclaré dans Harmony.
    Et JsonQuery est une requête JSON contenant les données à importer.

    En tout début de programme, mon WebService doit écrire des informations dans le journal de bord, mais je ne retrouve rien. Visiblement il ne démarre même pas !

    Avez-vous une idée de ce que j'ai fait de mal ? (à part promettre à mon client un truc que j'ai jamais fait )
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Finalement, le problème n'avait rien à voir avec Divalto, mais simplement SOAP.
    J'ai rajouté un SOAPAction dans le header HTTP et c'est passé !
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Malgré l'absence de mouvement sur ce forum, je vais quand même relater ici mes progrès.

    Déjà, dans un premier temps, avec l'ancien mode de licence, l'appel à un WebService Diva consomme une licence.
    Donc je suis resté bloqué un certain temps avec ce problème, dans la mesure où dès que j'ouvrais Divalto pour consulter les modifications apportées par mon WebService, je me retrouvais avec mon programme qui ne fonctionnait plus par manque de licence !

    Passé ce problème, je me suis heurté à un second problème bien plus gênant : les WebServices Diva ne sont pas fait pour fonctionner avec de multiples envirronements.
    En effet, le WebService est commun à tous les environnements, et s'exécute dans /divalto/sys

    Par conséquent, le seul moyen de s'en sortir c'est :
    - d'indiquer un utilisateur dans la déclaration du web service Diva
    - de créer cet utilisateur dans xlog.dhfd présent dans /divalto/sys
    - de créer un fichier implicitesXXX.txt et implicitesXXX.xml pour cet utilisateur dans /divalto/sys donnant accès aux chemins et bases de l'environnement désiré

    En conclusion, si je veux avoir un même WebService qui fonctionne sur DEV/TEST/PROD (si les trois environnements sont sur le même serveur) on doit déclarer 3 services diva avec trois utilisateurs différents, ayant chacun des implicites permettant de se connecter aux différents environements

    Quand on sait ça, après ça marche tout seul
    On ne jouit bien que de ce qu’on partage.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Février 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Directeur des systèmes d'information

    Informations forums :
    Inscription : Février 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Pouvez vous me donner une précision ?
    Bonjour,

    Vous dites avoir ajouté SOAPAction dans l'entête http, comment cela se traduit-il dans le code ?

    Merci d'avance.

    Jules

  5. #5
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Voici ce que j'ai dans mon code :
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                    Divalto.DivaltoServiceSoapClient client = new Divalto.DivaltoServiceSoapClient(Divalto.DivaltoServiceSoapClient.EndpointConfiguration.DivaltoServiceSoap12);
                    Divalto.WebServiceDivaResponse response = await client.WebServiceDivaAsync("<action>WEB_TEST", JsonQuery);

    Pour ce qui est du JsonQuery, il contient une chaîne JSON que je parse ensuite dans le Diva.
    On ne jouit bien que de ce qu’on partage.

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Passé ce problème, je me suis heurté à un second problème bien plus gênant : les WebServices Diva ne sont pas fait pour fonctionner avec de multiples environnements.
    En effet, le WebService est commun à tous les environnements, et s'exécute dans /divalto/sys
    Déterrage de topic (enfin, pas tant que ça, c'est toujours le premier de la liste ^^)

    Finalement, dans le wiki on trouve comment contourner cette limitation.
    Un WebService ne peut pas utiliser dynamiquement un environnement (ça aurait été quand même vachement pratique de l'avoir dans le HMP de l'action par exemple... ou dans la déclaration du service harmony).

    En revanche, on peut indiquer dans un fichier divaltoEnv.txt directement à côté des fichier *.asmx le nom de l'environement avec la balise HMP <env>.

    Et si on veut utiliser les webservices avec plusieurs environnement, il suffit de dupliquer le dossier avec chacun un divaltoEnv.txt différent, et déclarer autant de webservices dans IIS.
    On ne jouit bien que de ce qu’on partage.

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

Discussions similaires

  1. Mettre en place HTTP pour l'appel au webservice
    Par Immyy dans le forum Services Web
    Réponses: 1
    Dernier message: 16/03/2016, 16h57
  2. [Timer] Comment mettre en place un genre de timer ?
    Par freddyboy dans le forum MFC
    Réponses: 6
    Dernier message: 04/08/2005, 10h50
  3. Réponses: 5
    Dernier message: 28/07/2004, 11h39
  4. Réponses: 1
    Dernier message: 02/06/2004, 13h59
  5. Comment mettre en place une structure 3 tiers.
    Par WOLO Laurent dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 27/07/2003, 22h01

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