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 :

utilisation d'un webservice SAOP


Sujet :

WinDev

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 345
    Points : 167
    Points
    167
    Par défaut utilisation d'un webservice SAOP
    Bonjour,
    je crée un projet pour un client pour que ses clients puissent saisir des demandes de livraisons et de dispatcher ces livraisons entre différents transporteurs selon leurs tarif.

    Je cherche donc à me connecter à leurs différentes API; la plupart utilisent des API REST, mais DPD utilise encore une API SOAP et je rencontre un soucis lors de l'utilisation de celle-ci.

    J'ai bien importé le webservice dans mon projet comme décrit dans la documentation PCSOFT.

    voici un imprim écran de mon webservice (il est importé 2 fois car il y en a un pour l'environnement de prod et un pour l'environnement de test cher DPD donc je dois déclarer dans quel webservice je suis lorsque j'instancie un objet.)
    Nom : webservice.png
Affichages : 80
Taille : 18,3 Ko

    mon soucis vient lorsque je souhaite utiliser la méthode CreateMultiShipment (mais je pense que mon soucis sera le même que pour toutes les autres méthodes).

    voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    requete est un EPrintWebservice1.CreateMultiShipment
    reponseRequete est un EPrintWebservice1.CreateMultiShipmentResponse
     
    requete.request.customer_centernumber = customerCenterNumber
    ...
     
    reponseRequete.CreateMultiShipmentResult = EPrintWebservice1.CreateMultiShipment(requete.request)
    J'ai essayé différentes écritures, mais j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Le service a renvoyé l'erreur suivante : 
    Code : 'Server'
    Message : Server was unable to process request. ---> Object reference not set to an instance of an object.
    Il semblerait qu'un objet ne soit pas instancié, mais je ne vois pas lequel.
    Quand j'utilise les points d’arrêts, je vois bien que l'objet requete.request est bien initialisé avec les données que je lui ai données mais reponseRequete.CreateMultiShipmentResult est vide

    Je pense que mon problème est un bête problème dans la manière d'appeler la méthode.

    Qu'est-ce que j'ai mal écrit?

    Je vous remercie
    Qui vit par le Troll périra par le Troll!

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    mutlitâche-multifonction
    Inscrit en
    juin 2003
    Messages
    4 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : mutlitâche-multifonction
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2003
    Messages : 4 204
    Points : 7 188
    Points
    7 188
    Par défaut
    Bonjour,

    Ma réponse ne va pas corriger ton souci mais je t'expose ma façon de faire avec les webservices.
    Je n'utilise que des structures et des procédures pour mes interrogations (aucun objet donc).

    En parallèle, je prends SOAPUI pour "voir" comment le web service répond et ainsi comparer mes résultats.
    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.

    Make it real not fantasy.

  3. #3
    Membre expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 1 786
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    Dans un premier temps, pourquoi ne pas créer 2 configurations via l'éditeur de configuration une prod et une test. Cela permettrait un appel sans les préfixes.
    Dans un deuxième temps as tu exécuté la procédure pas à pas pour voir où cela péchait.
    Il y a peut être plus simple, mais ça tourne

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 345
    Points : 167
    Points
    167
    Par défaut
    Bonjour,
    je vous remercie pour vos réponses.

    J'ai viré le webservice de production pour ne plus avoir les préfixes mais j'ai toujours la même erreur.

    Quand je parcours ma fonction en pas à pas, je vois bien ma classe 'requete' qui s'initialise. C'est l'appel à la méthode CreateMultiShipment qui me renvoie cette erreur.


    J'ai créé un ticket au service technique DPD parce que j'avais adapté un exemple qu'ils m'avaient fournis (pour une autre méthode mais il me semble que le fonctionnement est similaire) et dedans, il a des objets qui sont instanciés avec des classes qui ne sont pas décrites dans le webservice. Donc j'attends leur retour, je leur ai demandé un exemple sur cette méthode spécifiquement.

    Je vous remercie pour vos réponses
    Qui vit par le Troll périra par le Troll!

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    mai 2008
    Messages
    345
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : mai 2008
    Messages : 345
    Points : 167
    Points
    167
    Par défaut
    Bon, j'ai un peu avancé mais clairement, c'est pas propre.
    J'ai utilisé la fonction SOAPPrepare() pour générer le texte XML et l'envoyer via un HTTPEnvoie.
    Déjà, j'ai remarqué que dans l'enveloppe du xml, il me manque une déclaration xmlns. en l'ajoutant à la main, la fonction HTTPEnvoie me retourne la réponse que j'attends.

    Le soucis, c'est que le contenu de la réponse http est en xml.
    Est-ce qu'il y aurait un moyen de convertir cet xml en json pour que je puisse traiter la réponse (j'attends une liste dans la réponse).

    Je vous remercie
    Qui vit par le Troll périra par le Troll!

Discussions similaires

  1. [Web Service][SOAP] Utilisation d'un webservice
    Par hacksi dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 04/03/2008, 11h08
  2. Pb d'utilisation d'un WebServices
    Par cnguyen dans le forum InfoPath
    Réponses: 3
    Dernier message: 26/10/2007, 13h53
  3. [C#]Utilisation d'un WebService distant
    Par BGC_Laurent dans le forum Services Web
    Réponses: 7
    Dernier message: 23/11/2006, 20h38
  4. [JAX-RPC][AXIS] lequel utiliser pour des webservices ?
    Par mlequim dans le forum Services Web
    Réponses: 2
    Dernier message: 10/03/2006, 10h12

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