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

WinDev Discussion :

Problème de WebService


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème de WebService
    Bonjour,

    Mon projet consiste à utiliser l’envoi de documents via WebService (Esker on Demand).

    D’après la documentation fournie sur internet (prévue pour le C#), il faut :

    Step 1 - Global initializations: Helper functions, particularly the CreateValue function which will be used to set the properties of the media through which the document will be sent
    Step 2 - Initialization and authentication: Done in four mandatory steps:
    - Instantiate a SessionService object.
    - Retrieve the Web service bindings (which contains the proper URLs to associate with each instantiated service).
    - Associate the proper URL of the binding to the instantiated service.
    - Log on the server

    Example (C#) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ODSession.SessionService session_service = new ODSession.SessionService();
    ODSession.BindingResult bindings = session_service.GetBindings("user"); 
     
    // Important: initialize Session service with binding URL
    session_service.Url = bindings.sessionServiceLocation;
     
    ODSession.LoginResult authenticatedSession = session_service.Login("user","pass");

    Cependant, j'utilise le logiciel Windev pour la programmation informatique.
    Après avoir importé le WebService dans mon projet (voir la pièce jointe), je tente donc d’adapter le code à mon environnement.
    Ce qui donne (Windev) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    session_service est un SessionService   // renvoie l'erreur : Le type SessionService est inconnu.
    bindings est un BindingResult = GetBindings(c_User)
     
    session_service.Url = bindings.sessionServiceLocation  // bindings.sessionServiceLocation contient bien une URL correcte
     
    LoginSession est un LoginResult = session_service.Login(c_User, c_Mdp)

    J'ai donc 2 problèmes :
    1- je ne peux instancier un objet "SessionService" (Erreur : Le type SessionService est inconnu)
    2- du coup, je ne peux utiliser ni "session_service.Url" ni "session_service.Login()"


    Note : si je n'instancie pas d'objet SessionService, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    bindings est un BindingResult = GetBindings(c_User)   // OK
    monUrl est une chaîne = bindings.sessionServiceLocation   // OK : contient bien une URL correcte
    LoginSession est un LoginResult = Login(c_User, c_Mdp)   // pas d'erreur
    Info(LoginSession.sessionID)  // Affichage de l’ID de la session : vide
    Mais l'ID de session est toujours vide
    Normal, car je pense que la méthode Login() a besoin de l'URL récupérée par GetBindings() pour renvoyer une valeur correcte.
    (je précise que les c_User et c_Mdp sont bons).

    Je sollicite donc votre aide afin d’avoir quelques indications sur la bonne marche à suivre.

    Merci d’avance.
    Images attachées Images attachées  

  2. #2
    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,
    SessionService étant ton Webservice, tu n'as pas besoin ici de l'instancier, contrairement à C#. Tu peux appeler les méthodes directement.

    Pour l'url, je suppose qu'il s'agit de l'adresse que tu dois utiliser, j'imagine donc que tu dois la passer à SessionService..adresse. A vérifier...

    Tatayo.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci tatayo pour la rapidité de votre réponse.

    Je me disais bien que je n'avais pas besoin d'instancier le WebService.

    Je teste avec la propriété SessionService..Adresse


    EDIT : Effectivement cela fonctionne en passant l'URL à SessionService..Adresse

    Merci !!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Suite...
    Bonjour,


    Suite de mon problème :

    Après avoir passé l'étape 1 (initialisation et autentification), la 2e étape me pose également problème :

    Step 2 - Submit a document
    - Instantiate a SubmissionService object.
    - Associate the proper URL of the bindings to the instantiated service.
    Example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ODSubmission.SubmissionService submissionService = new ODSubmission.SubmissionService();
    submissionService.Url = bindings.submissionServiceLocation;
    --> OK pour moi en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SubmissionService..Adresse = bindings.submissionServiceLocation
    - Set the proper sessionID value to the service to use the authenticated context created in first step.
    Example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    submissionService.SessionHeaderValue = new ODSubmission.SessionHeader();
    submissionService.SessionHeaderValue.sessionID = login.sessionID;
    --> Problème : comme je ne peux pas instancier le WebService, je ne peux pas affecter de valeur à la propriété "SessionHeaderValue.sessionID" (voir la pièce jointe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SubmissionService.SessionHeaderValue.sessionID = login.sessionID  // Erreur : propriété SessionHeaderValue interdite
    ********************
    ********************
    ********************
    De plus, je coince aussi sur l'étape d'après qui consiste à uploader le fichier souhaité (dans mon cas, ce seront toujours des fichiers PDF) via la fonction UploadFile() du WebService :
    D'après la doc, il faut :
    - Upload the attachment file(s) on the server, using the UploadFile function to initiate the upload and the UploadFileAppend (for bigger files) function.
    Example :
    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
    ODSubmission.WSFile uploadedFile = null;
     
    System.IO.FileStream myFile = System.IO.File.OpenRead("d:\temp\file.txt");
    Byte[] data = new Byte[64*1024];
    Int32 readlen;
    while( (readlen=myFile.Read(data, 0, data.Length)) > 0 )
    {
        byte[] data2 = new byte[readlen];
        Array.Copy(data, data2, readlen);
        if( uploadedFile == null )
            uploadedFile = submissionService.UploadFile(data2, shortFileName("d:\temp\file.txt"));
        else
            uploadedFile = submissionService.UploadFileAppend(data2, uploadedFile);
    }
    myFile.Close();
     
    // ...
    byte[] data3 = submit_service.DownloadFile(file);
    Console.WriteLine("file content: " + data3);
    Là, je suis complètement perdu. J'ai converti mon fichier PDF en fichier texte via un Bufffer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MonBuffer est un Buffer = fChargeBuffer("D:\monFichierPDF.pdf")
     
    SI PAS fSauveBuffer("D:\monBuffer.txt", MonBuffer) ALORS
    	Erreur(ErreurInfo())
    FIN
    Mais je ne vois pas comment l'utiliser. J'ai pensé à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FichierEnvoye est un SubmissionService.WSFile
    FichierEnvoye = UploadFile(JeNeVoisPasQuoiMettre,"D:\monBuffer.txt")
    Faut-il "parcourir" monBuffer.txt morceau par morceau comme en C# (et donc utiliser les fonctions UploadFile + UploadFileAppend) ? Si oui, je ne vois pas comment.
    Peut-on uploader monBuffer.txt en une seule fois uniquement avec la fonction UploadFile() ?
    La description de la fonction UploadFile() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ <parameters> est UploadFileResponse = ] UploadFile (<fileContent> est base64Binary, <name> est string)
    Je ne vois pas quoi mettre dans la 1e propriété <fileContent>

    Merci d'avance pour votre aide.
    Images attachées Images attachées  

  5. #5
    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,
    SessionHeaderValue est un type de donnée, j'imagine donc qu'il faut déclarer une variable de ce type.
    Peut-être qu'ensuite tu peux passer par cette variable pour lui affecter le sessionId.

    Pour ton fichier, il y a plusieurs choses à revoir:
    Ta "conversion" ne fonctionne pas, tout ce que tu as fait ici est de copier le fichier en changeant son extension.
    L'envoi prend visiblement en paramètre un tableau d'octets (64k) dans la version C#. Le premier appel récupère une sorte d'identifiant, qui est utilisé dans les appels suivants.
    Il faut donc que tu découpes ton buffer en tableaux d'octets de 64k max pour les envoyer dans le WebService.

    Tatayo.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour Tatayo,

    Bien entendu, je peux faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monHeader est un SubmissionService.SessionHeaderValue
    monHeader.sessionID = login.sessionID
    Cela fonctionne. Mais par contre, pas moyen de s'en servir ensuite (ni la variable monHeader ni le sessionID) car n'est plus requis.
    Donc la variable monHeader est déclarée et le sessionID renseigné mais ne sont plus utilisés ensuite, donc ne servent à rien.
    Je pense que comme à l'étape 1 où l'URL du WebService était nécessaire à la fonction GetBindings(), ici le sessionID doit être nécessaire à la fonction UploadFile().
    Je vais quand même essayer sans l'utiliser.

    Pour ce qui est du fichier PDF, merci pour la piste à explorer.

  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
    Où peut-on récupérer le WSDL en question ?

    Tatayo.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Il y a 3 WebServices à récupérer (SessionService, SubmissionService, QueryService) dans un fichier ZIP , à l'adresse suivante :
    https://doc.esker.com/EskerOnDemand/...nloads.html#DD

    (Liste des fichiers à droite, "Fichiers WSDL")

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,


    Personne n'aurait une idée ?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2022
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    Bonjour
    J'ai besoin d'utiliser les mêmes classes, j'arrive bien à m'identifier mais je bloque pour la suite.
    Quelqu'un a t'il trouvé la solution pour uploader le fichier?
    Merci.

  11. #11
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Je mets un message même si je sais que je pourrai pas résoudre ton pb car c'est une demande spécifique.

    Tu as trouvé ce vieux sujet qui correspond au domaine de ta demande. Il semble que la solution n'avait pas été trouvée par les utilisateurs du forum. As-tu essayé de contacter kenshinx ? Il a peut-être eu la solution et pourrait t'aiguiller.

    En attendant, il nous faudrait plus d'infos : qu'est-ce tu as fait ? Qu'est-ce qui te bloque ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2022
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    Bonjour
    Merci pour ta réponse.
    J'ai eu des informations par la société QUADIENT qui est à l'origine de cette API, je n'ai pas encore terminé mais en effet, si je bloque à nouveau je contacterai kenshinx
    Citation Envoyé par frenchsting Voir le message
    Bonjour,

    Je mets un message même si je sais que je pourrai pas résoudre ton pb car c'est une demande spécifique.

    Tu as trouvé ce vieux sujet qui correspond au domaine de ta demande. Il semble que la solution n'avait pas été trouvée par les utilisateurs du forum. As-tu essayé de contacter kenshinx ? Il a peut-être eu la solution et pourrait t'aiguiller.

    En attendant, il nous faudrait plus d'infos : qu'est-ce tu as fait ? Qu'est-ce qui te bloque ?

  13. #13
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Tu peux également nous poser des questions précises sur certains points. Ce n'est pas interdit
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  14. #14
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2022
    Messages : 3
    Points : 10
    Points
    10
    Par défaut
    👍 oui ok merci je n'hésiterai pas, bonne journée

Discussions similaires

  1. Problème Adresse WebService Axis 1.4
    Par cedzed64 dans le forum Services Web
    Réponses: 0
    Dernier message: 17/08/2009, 15h44
  2. Problème appel WebService IIS depuis Delphi
    Par ludogoal dans le forum Web & réseau
    Réponses: 2
    Dernier message: 27/02/2009, 08h56
  3. Problème OpenWorkbook WebService Excel
    Par toll13 dans le forum SharePoint
    Réponses: 0
    Dernier message: 30/04/2008, 21h23
  4. Problème namespace - webservices - C#
    Par yohan0262 dans le forum C#
    Réponses: 11
    Dernier message: 29/01/2008, 19h19
  5. [Débutant]problème de WebService
    Par romaik dans le forum InfoPath
    Réponses: 3
    Dernier message: 29/05/2007, 15h46

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